我正在尝试建立一些依赖于几个Node模块的CI测试,但不需要在package.json中安装所有内容。我想我可以这样:
npm install --no-save eslint stylelint stylelint-config-standard stylelint-order stylelint-scss
但是,这样做仍然将我devDependencies
中的所有内容安装在package.json中。如何告诉NPM忽略我的package.json,而只安装我专门告诉它的内容?
编辑:为了更好地说明我遇到的问题,我从一个项目中删除了node_modules
,并尝试运行npm install --no-save mkdirp
。 mkdirp是一个非常简单的模块,具有一个依赖性,但是从下面的输出中可以看到,NPM继续进行,仍然将所有内容安装在我的package.json
中。
jacob@RYZEN:~/Repositories/new-site$ npm install --no-save mkdirp
> puppeteer@1.8.0 install /mnt/c/Users/Jacob/Repositories/new-site/node_modules/puppeteer
> node install.js
Downloading Chromium r588429 - 103.7 Mb [====================] 100% 0.0s
Chromium downloaded to /mnt/c/Users/Jacob/Repositories/new-site/node_modules/puppeteer/.local-chromium/linux-588429
> node-sass@4.9.3 install /mnt/c/Users/Jacob/Repositories/new-site/node_modules/node-sass
> node scripts/install.js
Cached binary found at /home/jacob/.npm/node-sass/4.9.3/linux-x64-57_binding.node
> gifsicle@3.0.4 postinstall /mnt/c/Users/Jacob/Repositories/new-site/node_modules/gifsicle
> node lib/install.js
✔ gifsicle pre-build test passed successfully
> jpegtran-bin@3.2.0 postinstall /mnt/c/Users/Jacob/Repositories/new-site/node_modules/jpegtran-bin
> node lib/install.js
✔ jpegtran pre-build test passed successfully
> optipng-bin@3.1.4 postinstall /mnt/c/Users/Jacob/Repositories/new-site/node_modules/optipng-bin
> node lib/install.js
✔ optipng pre-build test passed successfully
> pngquant-bin@3.1.1 postinstall /mnt/c/Users/Jacob/Repositories/new-site/node_modules/pngquant-bin
> node lib/install.js
✔ pngquant pre-build test passed successfully
> node-sass@4.9.3 postinstall /mnt/c/Users/Jacob/Repositories/new-site/node_modules/node-sass
> node scripts/build.js
Binary found at /mnt/c/Users/Jacob/Repositories/new-site/node_modules/node-sass/vendor/linux-x64-57/binding.node
Testing binary
Binary is fine
> swiper@4.3.5 postinstall /mnt/c/Users/Jacob/Repositories/new-site/node_modules/swiper
> node -e "console.log('\u001b[35m\u001b[1mLove Swiper? Support Vladimir\'s work by donating or pledging on patreon:\u001b[22m\u001b[39m\n > \u001b[32mhttps://patreon.com/vladimirkharlampidi\u001b[0m\n')"
Love Swiper? Support Vladimir's work by donating or pledging on patreon:
> https://patreon.com/vladimirkharlampidi
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
+ mkdirp@0.5.1
added 1969 packages from 803 contributors and audited 24004 packages in 201.431s
found 21 vulnerabilities (4 low, 8 moderate, 9 high)
run `npm audit fix` to fix them, or `npm audit` for details
答案 0 :(得分:0)
根据npm文档,您只能安装dependencies
,而不能安装其他任何东西。
https://docs.npmjs.com/cli/install
带有--production标志(或在NODE_ENV环境变量时) 设置为生产),npm将不会安装列出的模块 devDependencies。
注意:--production标志在添加 对项目的依赖。
因此,只需运行npm install --production
答案 1 :(得分:0)
我已经弄清楚了为什么会这样;显然,如果您有package-lock.json
,则NPM始终在其中安装所有内容,而不管您传递的标志如何。解决方法是使用--no-package-lock
标志。
npm install --no-package-lock --no-save --quiet stylelint-config-standard stylelint-order stylelint-scss