经过一整天的工作后,我坐下来,在系统托盘中看到 Windows SkyDrive 的警报:
Files can't be uploaded because the path of this file or folder is too long. Move the item to a different location or shorten its name.
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\grunt-contrib-nodeunit\node_modules\nodeunit\node_modules\tap\node_modules\runforcover\node_modules\bunker\node_modules\burrito\node_modules\traverse\example\stringify.js
...有一段时间,我 mock 这种技术限制。
但是,我想知道:Node 项目中的目录递归量真的有必要吗?看起来 "angular-app\server\node_modules"
之外的路径只是整个项目的依赖项,可能更好地表示为:
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\grunt-contrib-nodeunit\
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\nodeunit\
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\tap\
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\runforcover\
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\bunker\
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\burrito\
C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\traverse\
我之前并没有真正考虑过它,因为与许多平台相比,Node 中的包管理似乎很神奇。
我想象一些大型 Node.js 项目甚至包含许多重复的模块(具有相同或相似的版本),这些模块可以合并为更少的数量。可以说:
存储和传输的数据量增加 重复的依赖项会增加开发软件的成本。
较浅的目录结构(尤其是在这种情况下)是 通常更容易导航和理解。
路径名过长可能会导致某些计算出现问题 环境。
我提议的(如果这样的东西不存在的话)是一个 Node 模块:
递归扫描 Node 项目,收集嵌套的
node_modules
文件夹列表以及它们相对于项目根的埋藏深度。将每个嵌套
node_modules
文件夹的内容移动到主node_modules
文件夹,编辑每个.js
文件的require()
调用,以免引用被破坏。处理重复依赖项的多个版本
如果不出意外的话,这将是一个有趣的实验。你们有什么感想?我可能会遇到哪些潜在问题?
最佳答案
关于javascript - Node.js 项目依赖的过度递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138182/