背景
当node_modules文件夹中的某些项的路径超过260个字符时,Windows构建系统会出现文件路径过长错误。
我们发现在devDependencies部分的顶部添加一个深度嵌套的依赖项可以解决这个问题。假设当npm看到一个嵌套的依赖C.1需要已经声明并在devDependencies中可用的包A时,npm不会将依赖项A添加到依赖项C.1的node_modules目录中。
问题 我在本地机器上遇到的问题是,在运行npm install --save-dev命令时,npm会按字母表顺序重新排列devDependencies中的软件包,但npm处理软件包及其依赖关系的顺序很重要。如果我提交这个更改,那么构建系统将遇到相同的文件路径过长错误。
例如,如果软件包A在软件包C之后,并且依赖项C.1需要软件包A,则npm将把软件包A添加到依赖项C.1的node_modules文件夹中。
我不确定这种重新排序是否只在我的电脑上发生,因为我以前从未看到npm重新排序依赖项。
版本 Node:v0.10.32 NPM:v1.4.28
另外注意:我已经阅读了npm 2.0或未来版本将分析依赖层次结构,找到重复的软件包,并仅在文件系统上引用它们一次,但是目前不考虑升级到npm 2.0。
我们发现在devDependencies部分的顶部添加一个深度嵌套的依赖项可以解决这个问题。假设当npm看到一个嵌套的依赖C.1需要已经声明并在devDependencies中可用的包A时,npm不会将依赖项A添加到依赖项C.1的node_modules目录中。
问题 我在本地机器上遇到的问题是,在运行npm install --save-dev命令时,npm会按字母表顺序重新排列devDependencies中的软件包,但npm处理软件包及其依赖关系的顺序很重要。如果我提交这个更改,那么构建系统将遇到相同的文件路径过长错误。
例如,如果软件包A在软件包C之后,并且依赖项C.1需要软件包A,则npm将把软件包A添加到依赖项C.1的node_modules文件夹中。
我不确定这种重新排序是否只在我的电脑上发生,因为我以前从未看到npm重新排序依赖项。
版本 Node:v0.10.32 NPM:v1.4.28
另外注意:我已经阅读了npm 2.0或未来版本将分析依赖层次结构,找到重复的软件包,并仅在文件系统上引用它们一次,但是目前不考虑升级到npm 2.0。
package.json
更改时调用npm shrinkwrap
,否则它会不断提交shrinkwrap,因为它一直在重新生成。 - dansch