代码之家  ›  专栏  ›  技术社区  ›  Phil

正在跳过2023中具有缓存的工作区的npm_install

  •  0
  • Phil  · 技术社区  · 2 年前

    假设您有一个带有模块联盟的monorepo,其中有5个不同的应用程序,您希望在单独的CI步骤中构建这些应用程序,并且在执行每个应用程序的构建之前,您需要拥有所有的node_module。npm-ci需要约1分钟,即整个ci额外需要5分钟,即使在 --prefer-offline 和.npm缓存。。。似乎安装的主要时间消费者是使用包锁定进行依赖性检查,而不是下载时间,.npm缓存实际上没有多大区别,可能只有15秒。

    而不是缓存 $HOME/.npm ,我正在尝试缓存准备使用的node_modules文件夹。在monoreo中,您也需要在工作区中缓存未提升的node_module,但您可以通过 npm query .workspace | jq -r '.[].location' ,将它们全部压缩在一起,打开缓存后,只需将所有内容放回各自的子文件夹/工作区即可。

    现在我的问题是,您还需要链接节点模块中的工作区,例如 node_modules/@my-company/some-lib . npm ci 它会自动执行此操作,但也会检查/安装外部依赖项。有没有办法绕过这个问题,让npm只做链接?

    还有什么其他因素会使这种情况变得不稳定吗?请记住,我已经负责版本控制了。我不使用package-lock.json来使缓存无效,而是使用没有工作区版本的package-lack.json-checksum,所以只有外部安装的包才重要。

    有其他人尝试过这种方法吗?

    0 回复  |  直到 2 年前
    推荐文章