我正在开发一个使用NPM进行依赖关系管理的Webpack,TypeScript和Angular 1.5.x Web应用程序。该应用程序有大约3个依赖项和package.json中列出的类似数量的devDependencies。许多依赖项是在Artifactory上托管的内部开发的NPM包。
Jenkins的npm install
非常慢(有时约为1小时)。我注意到以下几点:
在npm install
期间,.staging
下创建node_modules
目录。这里列出了大约12个不同版本的相同依赖项。我假设我们的每个依赖项都指定了这些依赖项的略有不同的版本,NPM会下载它们以解决它们。例如
$ ls -al node_modules/.staging/webpack-*
webpack-02c2cd2d/ webpack-core-0e45f015/ webpack-dev-middleware-1b9e08da/
# ...many more versions of webpack, wepack-core, webpack-dev-middleware
.staging
目录本身包含千个目录:
$ ls -al node_modules/.staging/ | wc -l
19406
我的问题如下:
.staging
目录是什么?什么是npm用它做什么?这个问题是asked as an issue on Github但从未得到妥善回答。npm install
这么慢?为什么要下载每个依赖项的这么多不同版本?答案 0 :(得分:0)
以下是发生的事情:
我们的内部包裹被收缩包裹。已使用npm-shrinkwrap.json
标志生成每个包的--dev
文件。这意味着开发依赖关系也会被收缩包装。
有两种可能的解决方案:
npm install --only=prod
。这应该是根据this answer