加速许多节点模块的安装

时间:2014-03-05 22:43:07

标签: performance node.js npm

我写了一个分析许多yeoman发生器结构的包: https://github.com/tobiasoberrauch/yeoman-analyzer

因此我必须安装所有发电机。这个解决方案需要很长时间(12小时)。我不太确定当前的解决方案是最好的方法:

  1. 获取生成器名称列表:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/data/generators.json

  2. 将生成器安装到node_modules,关于生成器名称列表(非常慢):https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L24

  3. 分析每个生成器的index.js:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L47

  4. 将报告写入json文件:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/reporter/json.js#L21

  5. 有没有办法加快这个过程?花了很长时间。 我读到了缓存,本地注册表(npmd),但我找不到合适的,可行的解决方案。

    我会对任何提示感到高兴:+1: 干杯托比亚斯

2 个答案:

答案 0 :(得分:0)

如果您只需要index.js,则无需安装所有生成器。只需使用类似wget的内容从npm注册表下载tarball,然后使用tar xz解压缩。

答案 1 :(得分:0)

感谢您的提示。 这是我的(暂时)解决方案:

  1. 从注册表中获取包数据:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L50

  2. 获取最新版本:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L64

  3. 下载和/或解压缩tarball文件:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L129

  4. 从解压缩的文件中读取package.json并获取主文件:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L79

  5. 在主文件中查找表达式:https://github.com/tobiasoberrauch/yeoman-analyzer/blob/master/lib/analyzer/generators.js#L90

  6. 有时zip文件为空,下载突然停止或esprima解析器显示意外错误。但我有一个粗略的计划来优化它。 这只是一个可怕的回调地狱。现在是优化和重组的时候了。