Review: node-lucide 1.55.0-1
Package Information
| Description | Flexible icon set with open source icons (Node.js library) Lucide is a community-based fork of Feather Icons, providing a large collection of simple and clean vector icons as reusable components and modules for JavaScript applications. |
|---|---|
| Maintainer | Debian Javascript Maintainers <pkg-javascript-devel@lists.alioth.debian.org> |
| Changed By | Jérémy Lal <kapouer@melix.org> |
| Sponsor | kapouer@melix.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/js-team/node-lucide.git (browse) |
| Closes | #1150297 |
| Blocked Bugs | #1093255 (wishlist) |
| Tracker | https://tracker.debian.org/pkg/node-lucide |
| Uploaded | 2 days ago |
New Package Report
.changes
| Architecture | source all |
|---|---|
| Distribution | unstable |
| Date | Fri, 06 Nov 2026 00:47:33 +0100 |
| Source | node-lucide |
| Version | 1.55.0-1 |
| Changed-By | Jérémy Lal <kapouer@melix.org> |
Changelog
node-lucide (1.55.0-1) unstable; urgency=medium
.
* Initial release. (Closes: #1150297)
In collaboration with Andrew Lee (李健秋)..dsc
| Component | main |
|---|---|
| Package-List | node-lucide deb javascript optional arch=all |
| Section | javascript |
| Priority | optional |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: lucide
Upstream-Contact: https://github.com/lucide-icons/lucide/issues
Source: https://github.com/lucide-icons/lucide
Files: *
Copyright: 2026 Lucide Icons and Contributor
2013-2016 Cole Bemis
License: ISC and Expat
Comment: derived from Feather project with Expat license
Files: debian/build_modules/rename-keys/*
debian/build_modules/deep-rename-keys/*
Copyright: 2014-2017, Jon Schlinkert
License: Expat
Files: debian/build_modules/xml-reader/*
debian/build_modules/xml-lexer/*
Copyright: 2016 Pedro Ladaria
License: Expat
Files: svgson/*
Copyright: 2018 Lionel Tzatzkin
License: Expat
License: ISC
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
DFSG Assistant LLM REVIEW 1 blocker, 0 important, 6 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 1 day ago.
Report
DFSG NEW review for node-lucide version 1.55.0-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: Yes
- Issues: 1 blocker, 0 important, 6 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: 2 found
Licensing
The code and icon licensing is fine and mostly well documented: Lucide itself is ISC, the Feather-derived icons carry the Expat/MIT notice that debian/copyright reproduces, and the vendored svgson and debian/build_modules MIT code (Lionel Tzatzkin, Jon Schlinkert, Pedro Ladaria) has correct stanzas. But debian/copyright does not describe all of the source: docs/public ships about fifty third-party brand logos (Vercel, DigitalOcean, Obsidian, Supabase, Nuxt, MDN, framework and sponsor marks) for which upstream grants nothing and for which several owners do not license the artwork at all, and CODE_OF_CONDUCT.md is licensed CC-BY-SA-4.0 by the Contributor Covenant, not ISC. The packaging's own copyright is also attributed to Lucide Icons.
Packaging
The packaging is sound: debhelper compat 13 with dh-sequence-nodejs, a trivial debian/rules, a sane component layout in debian/nodejs/ (main, additional_components, build_order, extlinks, submodules), two well-described DEP-3 patches for plugins and dependencies Debian does not ship, and Build-Depends that all resolve in the archive. Standards-Version 4.7.4 is current (Policy here is 4.7.4.1). What is left is minor: no autopkgtest at all, an incomplete debian/clean, a placeholder version in the generated Provides, and a typo in debian/upstream/metadata.
Issues
blocker licensing 1. docs/public ships third-party brand logos under no licence, while debian/copyright calls every file ISC/Expat ◂
- Files:
docs/public/company-logos/ (12 files: mdn, nuxt, obsidian, open-collective, supabase, vercel, dark and light),docs/public/framework-logos/ (27 files incl. lustre.webp),docs/public/library-logos/ (reflex, shadcn-ui, tamagui),docs/public/sponsors/ (fina-money.png, paxhistoria.svg, pdfme.svg, scipress.svg, zephyr-cloud.svg),docs/public/vercel.svg,docs/public/digitalocean.svg,debian/copyright:6-10 - Basis: checked, in the package or with a reference tool
- Evidence: Obsidian logo:
docs/public/company-logos/obsidian-dark.svg:1<svg alt="Obsidian" height="22" viewBox="0 0 143 25" ...>;docs/public/vercel.svgcarries the Vercel wordmark plus<path d="M23.3248 13L32.6497 29H14L23.3248 13Z"/>;docs/public/digitalocean.svgthe DigitalOcean wordmark. debian/copyright says onlyFiles: */Copyright: 2026 Lucide Icons and Contributor/License: ISC and Expat. Upstream's ownBRAND_LOGOS_STATEMENT.md:26explains that brand logos areprotected by trademark or copyright, anddocs/guide/version-1.md:50that all brand icons were removed from the icon set for legal reasons. - Problem: These files are artwork owned by MDN/Mozilla, Vercel, DigitalOcean, Obsidian, Supabase, Nuxt, Open Collective, the listed frameworks and the sponsors. No licence grant for them exists anywhere in the package, several of the owners (Obsidian, Hyva, the sponsors) do not license their marks freely, and they are certainly not under Lucide's ISC. debian/copyright therefore misdescribes the licensing of these files, and unlicensed third-party works cannot be distributed from main (DFSG 1-2, Policy 12.5). Upstream's trademark disclaimer does not cure the copyright position.
- Fix: Either repack the tarball without them and say so with Files-Excluded in debian/copyright (they are only website assets, referenced from docs/*.md; nothing in the build or the installed package needs them), or add one Files stanza per owner with its holder and actual licence and include that licence text where it is not in /usr/share/common-licenses.
minor licensing 2. CODE_OF_CONDUCT.md is CC-BY-SA-4.0, but debian/copyright lists it as ISC/Expat by Lucide ◂
- Files:
CODE_OF_CONDUCT.md:86-88,docs/code-of-conduct.md - Basis: checked, in the package or with a reference tool
- Evidence:
This Code of Conduct is adapted from the Contributor Covenant, version 3.0/Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0.; debian/copyright:Files: *...License: ISC and Expat. - Problem: The document says which licence it is under; Lucide's ISC grant cannot relicense the Contributor Covenant text, so the Files: * stanza is wrong for this file (Policy 12.5, DEP-5 6.7). The licence itself is free, so nothing non-DFSG is shipped.
- Fix: Add
Files: CODE_OF_CONDUCT.md docs/code-of-conduct.mdwithCopyright: Contributor Covenant contributorsandLicense: CC-BY-SA-4.0, referring to/usr/share/common-licenses/CC-BY-SA-4.0(present on the reviewing system) in the stand-alone paragraph.
minor licensing 3. debian/* has no Files stanza; the packaging is attributed to Lucide Icons and Contributor ◂
- Files:
debian/copyright:6-9,debian/changelog:1-6 - Basis: checked, in the package or with a reference tool
- Evidence:
Files: */Copyright: 2026 Lucide Icons and Contributor/2013-2016 Cole Bemismatches debian/ too, while the changelog is signedJérémy Lal <kapouer@melix.org>withUploaders: Andrew Lee (李健秋) <ajqlee@debian.org>. - Problem: DEP-5's
Files: *covers debian/ unless overridden, so the Debian packaging (rules, control, patches, generate-vue-icons.mjs, the debian/nodejs/ tree, tests) is credited to the upstream project rather than to its authors. The copyright file is inaccurate about who holds the copyright in Debian's own files. - Fix: Add a stanza after the upstream ones, e.g.
Files: debian/*withCopyright: 2026 Jérémy Lal <kapouer@melix.org>and2026 Andrew Lee (李健秋) <ajqlee@debian.org>,License: ISC.
minor packaging 4. Nothing tests the built modules: no debian/tests/control, and the pkg-js test script is commented out ◂
- Files:
debian/tests/pkg-js/test:1-5,debian/tests/pkg-js/files,debian/tests/ - Basis: checked, in the package or with a reference tool
- Evidence:
debian/tests/pkg-js/testis only# Test local require from packages/vue directory/#node -e "require('@lucide/vue')";debian/tests/holds justpkg-js/filesandpkg-js/test, with nocontrolfile, so the pkg-js autopkgtest never runs. - Problem: dh_auto_test runs
debian/tests/pkg-js/testat build time (Buildsystem/nodejs.pm, sub test) and it exits successfully without loading anything, and with no debian/tests/control autopkgtest runs no test either (Policy 12.2 recommends an autopkgtest suite; the pkg-js-tools layout here is half-finished). Nothing checks that /usr/share/nodejs/lucide or @lucide/vue load, so a broken install would only be found in the archive. - Fix: Add a debian/tests/control (e.g.
Tests: pkg-jswithDepends: @, pkg-js-autopkgtest, matching the pkg-js-tools layout) and a real test in debian/tests/pkg-js/test, for example uncommenting thenode -e "require('@lucide/vue')"line and adding one forlucide.
minor packaging 5. debian/clean does not remove the sources and licence the build generates inside packages/ ◂
- Files:
debian/clean:1-7,debian/nodejs/packages/vue/build:1-7,debian/nodejs/packages/lucide/build:1 - Basis: checked, in the package or with a reference tool
- Evidence:
debian/nodejs/packages/vue/buildrunsrm -rf dist ./src/icons/*.ts,cp ../../LICENSE ./LICENSEandtsx ../../tools/build-icons/cli.ts --output=./src ...; the lucide component likewise runspkgjs-run build:iconswriting intosrc.debian/cleanlists onlydist/,node_modules/,packages/*/dist/, the caches andsvgson/dist/. - Problem: After the build the tree keeps packages/lucide/src/icons/.ts, packages/vue/src/icons/.ts, packages/vue/src/aliases/*.ts and packages/vue/LICENSE.
debian/rules cleantherefore does not restore the unpacked state (Policy 4.9), and a laterdpkg-buildpackage -Swould sweep those generated files into the .debian.tar.xz. - Fix: Add the generated paths to debian/clean:
packages/lucide/src/icons/,packages/vue/src/icons/,packages/vue/src/aliases/andpackages/vue/LICENSE.
minor packaging 6. Provides advertises node-lucide-vue (= 0.0.1), a placeholder from the workspace package.json files ◂
- Files:
packages/vue/package.json:3,packages/lucide/package.json:4,debian/nodejs/root_modules:1 - Basis: checked, in the package or with a reference tool
- Evidence:
@lucide/vueandlucideboth declare"version": "0.0.1"while the source package is 1.55.0; Buildsystem/nodejs.pm, sub install, builds the substvar as'node-' . normalize_name(name)plus" (= $v)"frompackage.json's version for every root component. - Problem: The binary will provide
node-lucide-vue (= 0.0.1), and the installed package.json files also claim 0.0.1. A future package depending onnode-lucide-vue (>= 0.5)would be unsatisfiable, and the installed metadata misstates the module version. - Fix: Patch the two package.json versions to 1.55.0 in a DEP-3 patch (or set the version the build publishes), so the module metadata and the generated Provides agree with the source version.
minor packaging 7. debian/upstream/metadata has a broken Repository-Browse URL ('hhttps') ◂
- Files:
debian/upstream/metadata:5 - Basis: checked, in the package or with a reference tool
- Evidence:
Repository-Browse: hhttps://github.com/lucide-icons/lucide - Problem: The value is not a valid URL, so tools consuming DEP-12 metadata cannot use it.
- Fix: Change it to
https://github.com/lucide-icons/lucide.
Verified ◂
- Read debian/ in full (control, rules, changelog, copyright, clean, gbp.conf, salsa-ci.yml, source/format, patches/series and both patches, tests/, upstream/metadata, the debian/nodejs/ tree, build_modules/, generate-vue-icons.mjs, babel.config.json). debian/watch was left alone as instructed.
- Licence inventory: the tree holds exactly six licence-bearing files - LICENSE, svgson/LICENSE and the four debian/build_modules/*/LICENSE. Grep of the whole tree for Copyright/(c)/©/SPDX/Licensed under/permission clauses/GNU/Apache/MPL/CC/public domain found no other licence or holder.
- LICENSE is ISC (
Copyright (c) 2026 Lucide Icons and Contributors) plus an Expat/MIT section for the Feather-derived icons (Copyright (c) 2013-present Cole Bemis); debian/copyright reproduces both texts and names both holders. The scan's near-match 'Lucide Icons and Contributors' is in the file as 'Lucide Icons and Contributor' (singular) and Cole Bemis is listed as 2013-2016, i.e. year drift only. - svgson/ (its own orig tarball, gbp component) is MIT,
Copyright (c) 2018 Lionel Tzatzkin;Files: svgson/*gives Expat with the same holder, and the Expat text is in the file. - debian/build_modules/{rename-keys,deep-rename-keys,xml-reader,xml-lexer}: MIT, © Jon Schlinkert (2014-2017 / 2015-2017) and © 2016 Pedro Ladaria, matching the two stanzas. None of the four is packaged in Debian (apt-cache finds no node-rename-keys, node-deep-rename-keys, node-xml-reader, node-xml-lexer), so vendoring them in debian/build_modules is right rather than an embedded library.
- All packages/*/package.json declare
"license": "ISC"; every shipped module is therefore under the documented licence. - Icons: the icons/ tree (thousands of SVG/JSON pairs) carries no per-file notices; upstream removed the brand icons in v1 (docs/guide/version-1.md:50), and the two brand-adjacent names left, icons/apple.* and icons/bitcoin.*, are generic stroke glyphs, not the companies' marks.
- Binary assets in docs (favicons, mstile/apple-touch PNGs, 12 documentation screenshots under docs/images/, the two OG PNGs, framework-logos/lustre.webp) are upstream documentation assets of its own making, except the third-party logos reported above; og.png is produced by the present docs/.vitepress/createOGImage.ts.
- docs/public/templates/illustrator_template.ai (the scan's PDF) is an Adobe Illustrator template, which is its editable source form, not a built file: docs/contribute/icons/illustrator-guide.md:15 links it for download. docs/public/templates/affinity_designer.aftemplate (the scan's unrecognised binary) is the same for Affinity Designer, linked from docs/contribute/icons/affinity-designer-guide.md:13. Neither is generated by the Debian build.
- packages/angular/.angular/cache/21.2.19/ng-packagr/10874da3... (35.6 MB, the text file longer than 4 MiB the scan could only partly read) and tsbuildinfo/lucide-angular.tsbuildinfo are Angular/ng-packagr build caches generated from packages/angular/src, which is present; the Debian build neither uses nor installs packages/angular, so no source is missing and nothing is shipped from them.
- packages/lucide-react-native/lucide-react-native.d.ts is a checked-in bundled declaration file whose TypeScript sources are in packages/lucide-react-native/src; no dist/, node_modules/ or minified bundle exists anywhere in the tree.
- Every Build-Depends entry I queried resolves in the archive: esbuild (Provides node-esbuild), node-tsx (Provides node-tsx), node-babel7, node-vue, node-rollup-plugin-babel/-commonjs/-node-resolve/-replace/-license/-dts, node-minimist, node-eventemitter3, node-isobject, node-svgtofont, node-typescript, rollup, dh-sequence-nodejs (Provides it); @types/node in debian/nodejs/extlinks is the virtual node-types-node provided by nodejs.
- Patches carry DEP-3 headers (Description, Author/From, Forwarded) and address things Debian lacks (rollup-plugin-esbuild, rollup-plugin-summary, rollup-plugin-visualizer, prettier in the icon generator, @vercel/blob, oslllo-svg-fixer types); rollup-plugins-esbuild.patch explains its esbuild transform plugin.
- Standards-Version 4.7.4 against Policy 4.7.4.1: same first two components, no issue. debhelper compat 13 with
dh $@and dh-sequence-nodejs; ${misc:Depends} present; no maintainer scripts needed; source format 3.0 (quilt). - uscan found upstream releases with
debian/watch; a newer upstream version is available (upstream1.69.0, packaged1.55.0), which is not a fault of the package.
Not confirmed ◂
- docs/public/templates/illustrator_template.ai is a binary PDF/Illustrator file; I did not open it, so any embedded fonts or placed third-party artwork inside it are unchecked. Upstream's own document, so only that embedding matters.
- packages/vue/rollup.config.mjs passes
includeExternal: ['@lucide/shared/types']to rollup-plugin-dts, and @lucide/shared is not installed by node-lucide (debian/nodejs/submodules lists packages/vue only). If the produced dist/lucide-vue.d.ts imports that path, TypeScript consumers of @lucide/vue get an unresolved import; only a build can show whether the plugin inlines it. debian/watchlooks atgithub.com/elrumordelaluz/svgson, but theSourcefield ofdebian/copyrightnamesgithub.com/lucide-icons/lucide. Whether these are the same upstream was not checked.debian/watchlooks atgithub.com/elrumordelaluz/svgson, butRepositoryindebian/upstream/metadatanamesgithub.com/lucide-icons/lucide. Whether these are the same upstream was not checked.
Proposed changes ◂
None.
Uploader's response to the LLM review
The uploader rejected this upload in response to the review.
Review Information
rejected — allocated to dfsg-uploader 1 day ago, started 1 day ago, completed 1 day ago.
Final Comment
The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.