执行“npm install”后安装了太多 npm 模块
Posted
技术标签:
【中文标题】执行“npm install”后安装了太多 npm 模块【英文标题】:Too many npm modules are installed after execute "npm install" 【发布时间】:2016-02-21 00:43:55 【问题描述】:我的package.json
:
"name": "thumbnaillist-gulp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts":
"test": "echo \"Error: no test specified\" && exit 1"
,
"author": "",
"license": "ISC",
"dependencies":
"browserify": "^12.0.1",
"gulp": "^3.9.0",
"gulp-concat": "^2.6.0",
"gulp-react": "^3.1.0",
"gulp-util": "^3.0.7",
"react": "^0.13.3",
"react-script-loader": "0.0.1",
"reactify": "^1.1.1",
"vinyl-source-stream": "^1.1.0",
"watchify": "^3.6.1"
奇怪的是,我执行“npm install”后,除了依赖项字段列出的模块之外,还安装了其他模块,例如
drwxr-xr-x 14 xxx wheel 476B Nov 18 18:41 acorn
drwxr-xr-x 7 xxx wheel 238B Nov 18 18:41 amdefine
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 ansi-green
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 ansi-regex
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 ansi-styles
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 ansi-wrap
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 anymatch
drwxr-xr-x 9 xxx wheel 306B Nov 18 18:41 archy
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 arr-diff
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 arr-flatten
drwxr-xr-x 5 xxx wheel 170B Nov 18 18:41 array-differ
drwxr-xr-x 8 xxx wheel 272B Nov 18 18:41 array-filter
drwxr-xr-x 9 xxx wheel 306B Nov 18 18:41 array-map
drwxr-xr-x 9 xxx wheel 306B Nov 18 18:41 array-reduce
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 array-slice
drwxr-xr-x 5 xxx wheel 170B Nov 18 18:41 array-uniq
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 array-unique
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 arrify
drwxr-xr-x 8 xxx wheel 272B Nov 18 18:41 asn1.js
drwxr-xr-x 10 xxx wheel 340B Nov 18 18:41 assert
drwxr-xr-x 10 xxx wheel 340B Nov 18 18:41 ast-types
drwxr-xr-x 9 xxx wheel 306B Nov 18 18:41 astw
drwxr-xr-x 9 xxx wheel 306B Nov 18 18:41 async-each
drwxr-xr-x 11 xxx wheel 374B Nov 18 18:41 balanced-match
drwxr-xr-x 8 xxx wheel 272B Nov 18 18:41 base62
drwxr-xr-x 9 xxx wheel 306B Nov 18 18:41 base64-js
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 beeper
drwxr-xr-x 6 xxx wheel 204B Nov 18 18:41 binary-extensions
drwxr-xr-x 10 xxx wheel 340B Nov 18 18:41 bn.js
drwxr-xr-x 7 xxx wheel 238B Nov 18 18:41 brace-expansion
drwxr-xr-x 7 xxx wheel 238B Nov 18 18:41 braces
drwxr-xr-x 7 xxx wheel 238B Nov 18 18:41 brorand
drwxr-xr-x 13 xxx wheel 442B Nov 18 18:41 browser-pack
drwxr-xr-x 7 xxx wheel 238B Nov 18 18:41 browser-resolve
drwxr-xr-x 12 xxx wheel 408B Nov 18 18:41 browserify
drwxr-xr-x 17 xxx wheel 578B Nov 18 18:41 browserify-aes
drwxr-xr-x 8 xxx wheel 272B Nov 18 18:41 browserify-cipher
drwxr-xr-x 7 xxx wheel 238B Nov 18 18:41 browserify-des
drwxr-xr-x 8 xxx wheel 272B Nov 18 18:41 browserify-rsa
drwxr-xr-x 16 xxx wheel 544B Nov 18 18:41 browserify-sign
drwxr-xr-x 8 xxx wheel 272B Nov 18 18:41 browserify-zlib
drwxr-xr-x 11 xxx wheel 374B Nov 18 18:41 buffer
drwxr-xr-x 11 xxx wheel 374B Nov 18 18:41 buffer-xor
对此有任何提示吗?我的 NPM 坏了吗?或者我没有以正确的方式写package.json
。
【问题讨论】:
【参考方案1】:没有错,NPM 现在会将所有依赖项安装到根模块文件夹,除非存在版本冲突。您看到的所有其他模块都是您安装的模块的依赖项。
来自NPM 3.0.0 release notes:
您的依赖项现在将安装到最大平面。在可能的情况下,您的所有依赖项及其依赖项以及它们的依赖项都将安装在项目的 node_modules 文件夹中,没有嵌套。只有当两个(或更多)模块具有冲突的依赖关系时,您才会看到相互嵌套的模块。
【讨论】:
嗨,亚历克斯:谢谢。似乎 NPM 试图让事情变得干净和独立?它只是让我的几个测试项目变大了。 ^_^. 感谢@Alexander 澄清这一点。我想知道将所有依赖项存储在项目中而不是在临时目录中缓存那些不是“特定于项目”的依赖项有什么好处...... 我把 webpack 放到 node_modules 目录下,npm install webpack
得到 341 个包。你的意思是 webpack 依赖 341 个包?
@inherithandle 是的。它目前在 package.json 中列出了 22 个直接依赖项,但这些包也依次依赖于其他包,这些包也依赖于其他包,依此类推。【参考方案2】:
我希望 Alexander O'Mara 的回答对您有所帮助如果您仍然想要或想要使用旧版本等依赖项的人
你可以使用
npm install --legacy-bundling
如果你总是想使用
npm set legacy-bundling=true
并且使用可以照常运行
npm 安装
【讨论】:
以上是关于执行“npm install”后安装了太多 npm 模块的主要内容,如果未能解决你的问题,请参考以下文章
执行npm -install -g vue-cli 和 npm install -g cnpm --registry=https://registry.npm.taobao.org时保错