【发布时间】:2014-04-03 23:52:16
【问题描述】:
所以在工作了一整天后,我坐下来,在系统托盘中看到 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
...有一阵子,我对这种技术限制感到好笑。
然后,我想知道: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 recursion npm onedrive