背景
当节点模块文件夹中包含超过260个字符的路径的项目时,我们遇到了Windows构建系统遇到文件路径太长错误的问题。
我们发现在devDependencies部分的顶部添加一个深度嵌套的依赖项可以解决这个问题。假设当npm看到嵌套的dependency C.1
需要package A
,它已经在devDependencies中声明并可用,npm不会将dependency A
添加到dependency C.1
' s node_modules目录。
问题
我在本地计算机上看到的问题是运行npm install <package> --save-dev
按字母顺序重新排序devDependencies中的软件包,但是命令npm进程软件包及其依赖项很重要。如果我检查了这个,那么构建系统会在相同的文件路径上发出太长的错误。
即如果package A
出现在package C
之后且dependency C.1
需要package A
,那么npm会将package A
添加到dependency C.1
的node_modules文件夹中。
我不确定这次重新排序是否只在我的机器上,因为我以前没有看到过npm在家用机器上重新排序依赖项。
有没有人见过这个或知道如何阻止这种行为?
版本
节点:v0.10.32
NPM:v1.4.28
附注:我已经读过npm 2.0或未来的版本将分析依赖层次结构,找到重复的包,并且只在文件系统上引用它们一次,但升级到npm 2.0不在图片中这一次。
答案 0 :(得分:0)
我看到这个工作的唯一方法是使用某种预安装脚本,希望在依赖项文件更新之后运行但之前包是安装。 From the npm site:
在当前版本的节点中,执行此操作的标准方法是使用a .gyp文件。如果你的根目录中有一个扩展名为.gyp的文件 你的包,然后npm将运行相应的node-gyp命令 在安装时自动
如果这不起作用,则需要使用MakeFile并重写package.json文件。这并不是太平凡,因为有些项目需要某种预编译 - 你只需要指示你的团队运行一个单独的命令来安装npm软件包。