node.js - `npm install` 总是从 package.json 安装所有东西

标签 node.js npm continuous-integration

我正在尝试设置一些依赖于几个 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

最佳答案

我已经弄清楚为什么会发生这种情况;显然,如果您有 package-lock.json , NPM 总是在那里安装所有东西,不管你通过什么标志。解决方案是--no-package-lock旗帜。

npm install --no-package-lock --no-save --quiet stylelint-config-standard stylelint-order stylelint-scss

关于node.js - `npm install` 总是从 package.json 安装所有东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786695/

相关文章:

maven - 在 Maven 构建期间跳过子模块

continuous-integration - 与 XCode bots 和 cocoapods 的持续集成

javascript - Chunk.entrypoints : Use Chunks. groupsIterable 并通过 instanceof Entrypoint 过滤

node.js - npm 不会更改版本

node.js - 错误 - 找不到模块 'broccoli'

maven - 使用 Jenkins 和 Maven 获取唯一版本号

javascript - 将 JSON 值传递到 POST 请求 - Node

node.js - 在 Express 4 中访问来自 Jade 的即时消息

javascript - Node.js 如何用一个线程处理并发请求?

node.js - Node.js 不适合做什么样的任务?