2014-02-27 160 views
14

我想在构建过程阶段加速npm安装。我的package.json有很多包含锁定修订版的软件包列表。我一直在使用该命令还配置了高速缓存目录加速npm安装

npm config set cache /var/tmp/npm-cache --global 

然而,在尝试使用npm install -g --cache安装,我觉得这一步是不是通过减少从缓存中只装包,因为我将要安装的时间期望。事实上,我怀疑它是否使用本地缓存先查找软件包。

+0

不确定我完全按照,但听起来类似于npm-shrinkwrap试图解决的一些问题。 https://www.npmjs.org/doc/cli/npm-shrinkwrap.html –

回答

1

你也可以在你的版本库中包含你的node_modules文件夹(你可能正在使用git),并且只有npm rebuild(它可以跨平台工作)构建/部署过程,并且速度非常快。

这也将让你完全控制的好处在所有的依赖性(我知道这是什么拆封通常应该使用)

编辑:

您也可以设置进度标记为虚假日将提升至少 20%。这一声仅适用于[email protected],会有希望修正为(见第二个链接)

npm set progress=false 
+0

谢谢!我们正在使用颠覆。它还会好吗? – Prashanth

+1

当然,但请记住,您可能遇到一些合并问题。在我们的团队中,我们正在这样做,我们对此非常满意。完全控制依赖关系和非常快速的构建/部署过程 – hereandnow78

6

正如@Daniel塞罗迪奥建议

您还可以包含您的node_modules文件夹,你的仓库内,但你应该拉链它首先不是增加回购,并在安装可以解压它,只是

npm rebuild 

(其中工程跨平台),它是相当快的。

这也可以让您全面控制您的所有依赖关系。

此外,您可以将进程标志设置为false将您的速度提高2倍。

npm set progress=false 

Read source for more info

+0

使用'-s'选项不会是一样的吗? –

0

我们一直在努力解决这个问题,以加快我们的部署。

我们已经决定使用pac,它遵循其他答案中的原则。它将npm模块压缩并将它们包含在您的回购站中,因此您的提交和代码评论中没有一百万个文件,您只需为目标机器解压缩/重新构建即可。

https://www.npmjs.com/package/pac

0

没有帮我多(在我的情况的Windows Defender)禁用杀毒软件,我从2:30到1分钟。 随着npm-cache包我达到~30秒。 我试过使用纱线,速度非常快,但在我的情况下随机失败。

2

作为非常现代的解决方案,您可以开始使用Docker。 Docker允许虚拟化并预先定义代码的当前状态,包括安装的npm-modules和其他好东西。

一旦您的基础架构/ env的docker映像在本地构建,或者从远程存储库中检索到,它将存储在主机上,您可以在几秒钟内完成服务器的自旋。 它的另一个好处是您可以在部署代码的任何机器上使用相同的虚拟化代码基础架构。 Docker加速安装/部署过程并且被广泛使用的技术。

要开始使用码头工人就足以(所有的片段是用于预设置只是模拟/示例,并且不以任何方式最健壮/优雅的解决方案):

1)码头工人和搬运工-撰写使用安装手册,并得到它的一些基本的了解,在

2)写在你的应用程序

FROM node:6.9.5 
RUN mkdir /usr/local/app 
WORKDIR /usr/local/app 
COPY package.json package.json 
RUN npm install 

3)在与这些内容项目的根目录中创建泊坞窗,compose.yml根Dockerfile文件:

version: "2" 
server: 
    hostname: server 
    container_name: server 
    image: server 
    build: . 
    command: sh -c 'NODE_ENV=development PORT=8080 node app.js' 
    ports: 
    - "8080:8080" 
    volumes: #list of folders and files to use 
    - ${PWD}/server:/usr/local/server 
    - ${PWD}/app.js:/usr/local/app.js 

4)要启动服务器,您需要docker-compose up -d。要查看日志docker-compose logs -f server。如果您将重新启动服务器,它将在一次构建映像后几秒钟内完成。然后它会在本地缓存构建图层,因此下一次运行只需要几秒钟。

我知道这可能是一个强大的解决方案,但我相信它具有最大的潜力/灵活性,并在工业中广泛使用。尽管之前需要对以前没有使用过Docker的人进行一些学习,但我认为这是最适合您的问题。