从GitLab CI部署Node.js项目

4

我对node.js比较陌生,我正在尝试通过gitlab ci部署node.js项目。但是在pipeline中发现构建错误后,我意识到我将node_modules文件夹添加到了.gitignore文件中,而且我没有将node_modules推送到gitlab上。本地的node_modules文件夹大小为889MB,没有办法推送它。那么我应该使用什么方法从其他位置使用node_modules文件夹呢?

即,node_modules路径始终存在且可以在远程服务器上访问!我需要在package.json中包含该路径吗?

node_modules是否可以通过使用docker来维护?如何保持与每个项目特定的更新。

1个回答

6

你说得对,不需要检查node_modules文件夹,因为它们会在运行npm install时自动填充。

这应该是你的构建流程的一部分,在GitLab CI中实现。流水线允许多个步骤以及在下一个阶段传递工件的能力。在你的情况下,你想保存由运行npm install创建的node_modules文件夹,然后可以将其用于测试或部署。

从npm v5开始,有一个锁定文件来确保你在本地运行的内容与服务器上运行的内容相同。

此外,如果你想修复依赖关系并自动管理安全更新,你可以使用类似于renovate的工具。 (rennovate是开源的,因此可以在GitLab上运行)

一个非常简单的GitLab CI流水线可能包括:

// .gitlab-ci.yml
stages:
    - build
    - deploy

build:
    stage: build
    script:
        - npm install
    artifacts:
        name: "${CI_BUILD_REF}"
        expire_in: 10 mins
        paths:
            - node_modules

deploy:
   stage: deploy
   script:
     - some deploy command

我明白了,npm install 命令将创建一个包含所需 node packages 的 node modules 文件夹。由于 package.json 文件中列出了所有依赖项,在运行 npm run build 命令时,将从 npm registry 拉取这些依赖项!我的理解是正确的吗? - Ciasto piekarz
是的,就是这样工作的。我会更新问题,使其更清晰。 - Peter Grainger
为什么要创建一个 node_modules 的构件? - Talha Junaid
1
这意味着您可以在后续阶段中使用它。 - Peter Grainger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接