【问题标题】:Speed up many installations of node modules加快节点模块的许多安装
【发布时间】:2014-03-06 23:08:23
【问题描述】:

我写了一个包来分析很多 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

有没有办法加快这个过程? 2.耗时很长。 我阅读了有关缓存、本地注册表 (npmd) 的信息,但没有找到合适的、可行的解决方案。

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

【问题讨论】:

  • npm install--production 选项一起使用。这将使它忽略通常不需要的devDependencies

标签: performance node.js npm


【解决方案1】:

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

【讨论】:

  • 不能一个包使main 任何他们想要的东西,而不仅仅是index.js 吗?
  • 嗯,这是一种非常糟糕的风格,他们应该得到它。 :) 但是你是对的,程序应该先解包 package.json 来检查main
  • 另外,这个问题专门询问#3中的index.js,所以我做了相应的回答。
  • 试图向 Google 员工添加上下文 :)
【解决方案2】:

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

  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

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

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 2023-04-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    相关资源
    最近更新 更多