node.js – GitLab CI:如何在作业之间重用已安装的npm包?

我有一个使用Gulp进行构建的 GitLab Pages网站.我的.gitlab-ci.yml文件看起来类似于:

image: node:latest

before_script:
  - npm install gulp-cli -g
  - npm install gulp [...and a whole bunch of packages] --save-dev

build:
  stage: build
  script:
  - gulp buildsite
  artifacts:
    paths:
    - public

pages:
  stage: deploy
  script:
  - gulp
  artifacts:
    paths:
    - public

cache:
  paths:
  - node_modules/

在构建和页面作业之前,执行npm install命令(在每个作业之前执行一次).由于我有很多包,这通常需要一段时间.

有没有办法只在整个构建中进行一次安装?

我认为这是缓存应该有用的东西,但它似乎仍然会重新下载所有东西.

解决方法

虽然评论中的答案基本上是正确的.我认为你的案件的具体答案会很好.您可以使用的一种方法添加第三个阶段,它将承担安装节点模块的负担,您还可以缓存它们以加速后续构建:

image: node:latest

stages:
  - prep
  - build
  - deploy  

before_script:
  - npm install gulp-cli -g  

prep:
  stage: prep
  script:
  - npm install gulp [...and a whole bunch of packages] --save-dev
  artifacts:
   paths:
   - node_modules 
  cache:
   paths:
   - node_modules

build:
  stage: build
  script:
  - gulp buildsite
  artifacts:
    paths:
    - public

pages:
  stage: deploy
  script:
  - gulp
  artifacts:
    paths:
    - public

解决方案仅执行一次安装,并将为未来的ci管道缓存结果,您也可能在节点模块工件上放置一个到期日.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...