Review: node-lucide 1.70.0+dfsg-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 | 1 day ago |
New Package Report
.changes
| Version | 1.70.0+dfsg-1 |
|---|---|
| Changed-By | Jérémy Lal <kapouer@melix.org> |
| Architecture | source all |
| Distribution | unstable |
| Date | Fri, 06 Nov 2026 00:47:33 +0100 |
| Source | node-lucide |
Changelog
node-lucide (1.70.0+dfsg-1) unstable; urgency=medium
.
* Initial release. (Closes: #1150297)
In collaboration with Andrew Lee (李健秋)..dsc
| Section | javascript |
|---|---|
| Priority | optional |
| Component | main |
| Package-List | node-lucide deb javascript optional arch=all |
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-Excluded: docs/public Files: * Copyright: 2026 Lucide Icons and Contributor License: ISC Files: icons/airplay.* icons/aperture.* icons/arrow-down.* icons/arrow-down-left.* icons/arrow-down-right.* icons/arrow-left.* icons/arrow-right.* icons/arrow-up.* icons/arrow-up-left.* icons/arrow-up-right.* icons/at-sign.* icons/calendar.* icons/cast.* icons/check.* icons/chevron-down.* icons/chevron-left.* icons/chevron-right.* icons/chevron-up.* icons/chevrons-down.* icons/chevrons-left.* icons/chevrons-right.* icons/chevrons-up.* icons/circle.* icons/circle-arrow-down.* icons/circle-arrow-left.* icons/circle-arrow-right.* icons/circle-arrow-up.* icons/circle-divide.* icons/circle-exclamation-point.* icons/circle-minus.* icons/circle-pause.* icons/circle-plus.* icons/circle-question-mark.* icons/circle-x.* icons/clipboard.* icons/clock.* icons/code.* icons/columns-2.* icons/command.* icons/compass.* icons/corner-down-left.* icons/corner-down-right.* icons/corner-left-down.* icons/corner-left-up.* icons/corner-right-down.* icons/corner-right-up.* icons/corner-up-left.* icons/corner-up-right.* icons/crosshair.* icons/database.* icons/dollar-sign.* icons/download.* icons/eighth-notes.* icons/ellipsis.* icons/ellipsis-vertical.* icons/external-link.* icons/face-neutral.* icons/face-slightly-frowning.* icons/face-slightly-smiling.* icons/feather.* icons/hash.* icons/headphones.* icons/info.* icons/italic.* icons/key.* icons/life-buoy.* icons/link.* icons/link-2.* icons/loader.* icons/lock.* icons/log-in.* icons/log-out.* icons/maximize.* icons/minimize.* icons/minimize-2.* icons/minus.* icons/monitor.* icons/moon.* icons/move.* icons/navigation.* icons/navigation-2.* icons/octagon.* icons/octagon-exclamation-point.* icons/octagon-x.* icons/panel-left.* icons/panels-top-left.* icons/percent.* icons/plus.* icons/power.* icons/radio.* icons/rss.* icons/search.* icons/server.* icons/share.* icons/shopping-bag.* icons/smartphone.* icons/square.* icons/square-divide.* icons/square-minus.* icons/square-plus.* icons/square-x.* icons/table-2.* icons/tablet.* icons/target.* icons/terminal.* icons/trash.* icons/triangle.* icons/triangle-exclamation-point.* icons/tv.* icons/type.* icons/upload.* icons/x.* icons/zoom-in.* icons/zoom-out.* Copyright: 2013-2016 Cole Bemis License: Expat Comment: derived from the Feather project. Names do not match with what is listed in LICENSE. See https://github.com/lucide-icons/lucide/issues/119. Files: CODE_OF_CONDUCT.md Copyright: Unknown Comment: This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at https://www.contributor-covenant.org/version/3/0/ License: CC-BY-SA-4.0 This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. . On Debian systems, the complete text of the Creative Commons Attribution-ShareAlike 4.0 International License can be found in "/usr/share/common-licenses/CC-BY-SA-4.0". Files: debian/* Copyright: 2026 Jérémy Lal <kapouer@melix.org> License: Expat 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 0 blocker, 1 important, 4 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.70.0+dfsg-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: Yes - Packaging is of good quality: No
- Issues: 0 blocker, 1 important, 4 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
Every file is under a free licence and the licences are compatible: ISC for Lucide's own code, icons and docs, Expat (MIT) for the Feather-derived icons and for the vendored svgson and build-only modules, CC-BY-SA-4.0 for the code of conduct. debian/copyright is DEP-5, its Files: stanzas override in the right order, it includes the full ISC and Expat texts and a correct pointer to /usr/share/common-licenses/CC-BY-SA-4.0, and no holder named in the tree is missing (the prescan's "Lucide Icons and Contributors" is the Files: * holder, spelled "Contributor" there). Only cosmetic slips remain.
Packaging
The packaging is deliberate work — a component build order with debian/nodejs/*/build scripts, four DEP-3 patches, vendored build-only npm modules that Debian does not ship — and it will build and install. But it is not ready to upload as is: the orig tarball carries a 36 MB Angular build cache containing the upstream author's absolute paths, debian/clean does not remove the icon/alias sources the build generates (Policy 4.9), the autopkgtest it ships is inert, and two dead debian files and a stale version banner remain.
Issues
important packaging 1. The orig tarball ships a 35.6 MB Angular build cache with the upstream developer's absolute paths ◂
- Files:
packages/angular/.angular/cache/21.2.19/ng-packagr/10874da3fb3e1c9df348ed355bf2b0ca82dbe0c880cf69f052802c177281d5e7,packages/angular/.angular/cache/21.2.19/ng-packagr/tsbuildinfo/lucide-angular.tsbuildinfo,node-lucide_1.70.0+dfsg.orig.tar.xz,debian/copyright:6 - Basis: checked, in the package or with a reference tool
- Evidence: The cache file is a single 35.6 MB JSON line holding e.g.
"facadeModuleId":"/Users/eric.fennis/Development/lucide/packages/angular/dist/tmp-typings/lucide-angular.d.ts"; it is present in the orig tarball (lucide-icons-lucide-b826f0c/packages/angular/.angular/), anddebian/copyrightexcludes onlydocs/public. - Problem: A committed
.angular/ng-packagrcache is build output: it is machine-specific, leaks the upstream developer's home directory into the source package, and makes the source package 35 MB bigger than the code it contains. It is not generated from anything the Debian build needs, andpackages/angularis not even built here. - Fix: Repack with
packages/angular/.angularinFiles-Excluded(and in the watch exclusions so uscan does not fetch it back), or ask upstream to drop the committed cache and re-tag; also make suredebian/rules cleanwould remove it if a build ever created it.
minor packaging 2. debian/clean leaves the icon and alias sources generated by the build, contrary to Policy 4.9 ◂
- Files:
debian/clean,debian/nodejs/packages/lucide/build,debian/nodejs/packages/vue/build,tools/build-icons/building/generateIconFiles.ts,tools/build-icons/building/aliases/generateAliasesFiles.ts - Basis: checked, in the package or with a reference tool
- Evidence:
debian/cleanlists onlypackages/vue/src/icons/*.ts(plusdist/,node_modules/,packages/*/dist/,packages/*/.tsbuildinfo,svgson/dist/), while the lucide build runsbuild-icons --output=./srcwhich writessrc/icons/*.tsandsrc/aliases/aliases.ts(path.join(outputDirectory, 'aliases')), and the vue build writessrc/aliases/aliases.ts,prefixed.tsandsuffixed.ts. - Problem: Policy 4.9 requires the clean target to undo the effects of build and binary; the generated sources under
packages/lucide/src/{icons,aliases}andpackages/vue/src/aliasessurvivedebian/rules clean, sodpkg-source -bfrom a once-built tree aborts on unrepresentable changes, and a rebuild starts from stale generated files. - Fix: Add
packages/lucide/src/icons/*.ts,packages/lucide/src/aliases/*.tsandpackages/vue/src/aliases/*.tstodebian/clean(and the same for any other component that gets built).
minor packaging 3. The autopkgtest is inert: the pkg-js test script tests nothing and debian/control has no Testsuite field ◂
- Files:
debian/tests/pkg-js/test:5,debian/control - Basis: checked, in the package or with a reference tool
- Evidence:
debian/tests/pkg-js/testis#!/bin/sh/set -e/# Test local require from packages/vue directory/#node -e "require('@lucide/vue')"— the only command is commented out; the Source stanza ofdebian/controlhas noTestsuite:field and there is nodebian/tests/control. - Problem: As shipped the test can never fail, and with no
Testsuite:header (per the autopkgtest specification, which asks packages to declareTestsuite: autopkgtest-pkg-nodejsfor this kind of implicit control file) thedebian/tests/pkg-jstree is not even discovered, so the package has no autopkgtest coverage at all. - Fix: Declare
Testsuite: autopkgtest-pkg-nodejsindebian/controland makedebian/tests/pkg-js/testactually require the installed modules, e.g.node -e "require('lucide'); require('@lucide/vue'); require('svgson')".
minor packaging 4. debian/generate-vue-icons.mjs and debian/babel.config.json are leftovers of an abandoned build approach ◂
- Files:
debian/generate-vue-icons.mjs,debian/babel.config.json - Basis: checked, in the package or with a reference tool
- Evidence: Nothing in
debian/rulesordebian/nodejs/refers to either file (the onlybabel.confighits are upstream.npmignorelines); the header ofdebian/patches/rollup-plugins-esbuild.patchsays "The previous @babel/core based workaround for packages/vue is therefore dropped", and the vue build now usestsx ../../tools/build-icons/cli.ts. - Problem: Dead packaging files mislead the next maintainer into thinking the vue components are generated by the babel helper, and if they ever were used the babel presets they name would need Build-Depends.
- Fix: Delete both files.
minor packaging 5. The shipped dist bundles carry the placeholder version 0.0.1 in their licence banner ◂
- Files:
debian/rules:19-20,packages/lucide/package.json:4,tools/rollup-plugins/plugins.js - Basis: inferred from what was read, not seen directly
- Evidence:
debian/rulesonly rewritespackages/{lucide,vue}/package.jsoninexecute_before_dh_auto_install, while the bundles are built earlier bydh_auto_build; the rollup licence plugin bakesbanner: \@license ${pkg.name} v${pkg.version} - ${pkg.license} ...`from the package.json read at build time, which still says"version": "0.0.1"`. - Problem: The files users install therefore advertise
lucide v0.0.1and@lucide/vue v0.0.1in their headers while the installed package.json says 1.70.0+dfsg, which is confusing when reading bug reports and does not match the archive version. - Fix: Do the version rewrite in
execute_before_dh_auto_build(and restore it inexecute_after_dh_auto_install), or patch the placeholder versions inpackage.jsonwith a quilt patch.
Verified ◂
- Holder check:
LICENSE:3saysCopyright (c) 2026 Lucide Icons and Contributorsanddebian/copyright:8saysCopyright: 2026 Lucide Icons and Contributor— the same holder with a droppeds, no different entity, so no holder is missing (cosmetic, not reported as an issue). - Feather-derived icons: the
icons/...stanza paths all exist and correspond to the names inLICENSE:21through the current icon names (icons/circle-exclamation-point.jsonhas aliasalert-circle,icons/panels-top-left.jsonhas aliaslayout,icons/face-neutral/face-slightly-smiling/face-slightly-frowningaremeh/smile/frown);Copyright: 2013-2016 Cole Bemisagainst LICENSE's2013-presentis year drift only, and the full Expat text is in the file. CODE_OF_CONDUCT.mdis an adaptation of Contributor Covenant 3.0, which isCC BY-SA 4.0asdebian/copyright:133says; the file namesCopyright: Unknownand no other holder is discoverable in it.svgson/comes from the separateorig-svgson.tar.xzcomponent (watchComponent: svgson,gbp.confcomponent); itsLICENSEis MIT/Expat for Lionel Tzatzkin as thesvgson/*stanza says. ItsCODE_OF_CONDUCT.mdcarries no licence notice of its own — it is an adaptation of Contributor Covenant 1.4, whose CC BY terms permit relicensing under svgson's MIT — so the stanza's Expat is the only licence claimed for it.debian/build_modules/{rename-keys,deep-rename-keys,xml-reader,xml-lexer}each ship an MITLICENSEmatching the stanzas;apt-cacheshows Debian has nonode-rename-keys,node-deep-rename-keys,node-xml-readerornode-xml-lexer, so they are not duplicate embedded copies, anddebian/nodejs/extlinkskeeps them build-time only.- Debian has no
node-svgsoneither (apt-cache); the vendored svgson is installed into /usr/share/nodejs bydebian/nodejs/submodules, which is the only way it is shipped and is justified while the archive lacks it. - No fonts, PDFs, archives, minified JS/CSS or source maps in the tree (
globfor*.ttf,*.woff*,*.pdf,*.zip,*.min.js,*.mapetc. found none). The PNGs underdocs/images/docs/guide/imagesare documentation screenshots anddocs/images/package-logos/holds the project's own package logos — all underFiles: */ISC. - The scan's "text file longer than 4 MiB" is the 35.6 MB Angular cache reported as an issue, plus its
tsbuildinfo; both are ng-packagr output forpackages/angular/src, whose sources are in the package, so they raise no licensing question. docs/public/is genuinely absent from the tree, soFiles-Excluded: docs/publicis honest and the company/sponsor logos it contained are not shipped.- licensing of
debian/*: the single holder2026 Jérémy Lalis the packaging author; theFrom:/Author:headers of the three patches credit Jérémy Lal and Andrew Lee, which is authorship metadata rather than a copyright notice, so I did not report it. - packaging basics:
debian/rulesis plaindh $@at compat 13;${misc:Depends}and${nodejs:Provides}are present;Depends: node-vueis required by@lucide/vue'speerDependencies: vue >=3.0.1and unstable'snode-vueis 3.5.43; no maintainer scripts or maintscripts exist to be wrong. debian/nodejs/extlinksnames are resolvable:@types/nodeis provided bynodejs(virtualnode-types-node),@types/minimistbynode-minimist; the other build deps are ordinary archive packages.debian/source/formatis3.0 (quilt)with the svgson component, consistent withgbp.conf, the watchComponent:line anddebian/nodejs/submodules;Standards-Version: 4.7.4against Policy 4.7.4.1 is current enough, and the changelog distribution, version and date are sane.debian/upstream/metadatacovers Bug-Database, Bug-Submit, Changelog, Documentation, Repository and Screenshots.- uscan found the packaged version as the newest upstream release (upstream
1.70.0, packaged1.70.0+dfsg). - Every pointer of
debian/copyrightto /usr/share/common-licenses names a file that is there (CC-BY-SA-4.0).
Not confirmed ◂
- No build was run: the stale
v0.0.1banner is reasoned fromdebian/rules(version set before install only), the rollup licence banner and the placeholderpackage.jsonversions, and thedpkg-source -babort from the leftover generated files is reasoned from the paths, not observed. - I could not check that Debian's
esbuildbinary package provides theesbuildNode module under/usr/share/nodejsthatdebian/nodejs/extlinkslinks (pkg-js-tools aborts on an unresolvable extlink). It is not installed on the reviewing system; the patch and extlinks assume it exists. - Autopkgtest discovery was checked against the autopkgtest specification's
Testsuite:requirement and the files themselves, not by running debci. 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.