Chr*_*olf 5 npm peer-dependencies
我正在参与构建一个曾经使用node-sass. sass我们同时迁移到,但我们仍然保留node-sass在我们的package-lock.json. 我想解决这个问题。
一开始,我们有这样的事情
\n$ npm ls node-sass\ncookbook@0.9.13 /home/private/Documents/Projekte/nextcloud-apps/nextcloud-app-dev/volumes/custom_apps/cookbook\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node-sass@7.0.1\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac sass-loader@13.0.2\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 node-sass@7.0.1 deduped\nRun Code Online (Sandbox Code Playgroud)\n好的,让我们通过调用来删除依赖关系npm uninstall node-sass。结果是
$ npm ls node-sass\ncookbook@0.9.13 /home/private/Documents/Projekte/nextcloud-apps/nextcloud-app-dev/volumes/custom_apps/cookbook\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac sass-loader@13.0.2\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 node-sass@7.0.1\nRun Code Online (Sandbox Code Playgroud)\n我不明白原因,为什么sass-loader仍然取决于node-sass。好吧,让我们仔细看看:
$ npm why node-sass\nnode-sass@7.0.1 optional peer\nnode_modules/node-sass\n peerOptional node-sass@"^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" from sass-loader@13.0.2\n node_modules/sass-loader\n sass-loader@"^13.0.2" from the root project\n peer sass-loader@"^13.0.1" from @nextcloud/webpack-vue-config@5.3.0\n node_modules/@nextcloud/webpack-vue-config\n dev @nextcloud/webpack-vue-config@"^5.0.0" from the root project\nRun Code Online (Sandbox Code Playgroud)\n现在我有点惊讶了。该包node-sass仅作为对等依赖项安装。那么,为什么要安装它呢?我认为对等依赖的想法是允许根项目选择正在使用的版本。
而且,它只是可选的。因此,它应该能够删除它(最终在删除过程中可能会出现警告,但没什么严重的)。
\n我没有处理这个@nextcloud/webpack-vue-config包裹。它只是 Web 应用程序的开发依赖项。因此,NPM 不应将其安装node-sass为我的任何依赖项的开发依赖项。
如何node-sass从我的项目中删除该包package-lock.json?它仍然锚定在每个构建上package-lock.json,因此安装在每个构建上。
我可以使用--no-optionalCLI 选项npm跳过所有可选依赖项。我不想那样做。这样做的“问题”是 GitHub 依赖项检查器不会将该node-sass模块视为已跳过并继续抱怨。此外,其他可选依赖项也可能会被跳过,尽管我们希望拥有它们。
小智 4
前几天我用 node-sass 和 sass-loader 遇到了这个问题。
@nextcloud/webpack-vue-config对我来说,简单的解决方案是从我的 package.json 中删除,npm install然后将其放回去并重新运行npm install
这足以让内部结构重置以使node-sass消失。
| 归档时间: |
|
| 查看次数: |
3692 次 |
| 最近记录: |