在 Bluemix 中构建 Node.js 应用程序时如何覆盖 node_modules 的默认缓存?

How to override default caching of node_modules while building Node.js application in Bluemix?

是否可以覆盖 Bluemix 的默认行为以缓存 NPM 在构建期间安装的 node_modules?

Bluemix 中的默认行为是缓存 NPM 安装的所有 node_modules。 但是,我们可以使用 NODE_MODULES_CACHE 变量来确定 Node buildpack 是使用还是忽略以前构建的缓存。

要禁用缓存,请执行以下 CF 命令将 NODE_MODULES_CACHE 设置为 false。

$ cf set-env myapp NODE_MODULES_CACHE false

Bluemix 为每个节点应用程序维护一个缓存目录,该目录在构建之间保持不变。缓存存储已解析的依赖项,因此不会在每次部署应用程序时都下载和安装它们。使用 NODE_MODULES_CACHE 变量来确定 Node buildpack 是使用还是忽略以前构建的缓存。默认值为真。

    $ cf set-env myapp NODE_MODULES_CACHE false

请注意,您的应用程序中包含的 node_modules 缓存。

您可以在顶级 package.json 中使用 cacheDirectories 数组来实现对哪些模块的细粒度控制缓存。当 cacheDirectories 元素出现在 package.json 中时,只有 cacheDirectories 中的那些模块] 数组将被缓存。在下面的例子中只有 node_modulesbower_components 被缓存:

{
  "cacheDirectories": ["node_modules","bower_components"],
  ...
}

更多信息here