当 devDependency 未安装时,如何在生产环境中运行构建和测试?

Str*_*ch0 4 deployment continuous-integration node.js npm babeljs

我确信这是一个常见问题,但我似乎找不到明确的答案。

我有一个节点应用程序,为了构建它需要一些 devDependency,例如babel. 为了运行我的测试还需要 devDependency,例如jest. 但是当 CI 在生产环境中运行时,它显然没有安装任何 devDependency,因此我会收到找不到包的错误。

在没有 devDependency 的情况下在 prod 中运行构建和测试的最佳实践是什么?

如果有帮助,我正在 GitLab Pipelines 中运行我的构建:

image: node:8.11.2

stages:
  - prepare
  - test
  - deploy

install_and_build:
  stage: prepare
  script:
    - npm install yarn
    - yarn
    - yarn build
  only:
    - master

test:
  stage: test
  script:
    - yarn test
  only:
    - master

deploy_production:
  type: deploy
  stage: deploy
  image: ruby:latest
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=app-name --api-key=$HEROKU_API_KEY
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

Lep*_*nzo 5

这个答案来看,

首先,您需要“安装所有依赖项”。

npm install
Run Code Online (Sandbox Code Playgroud)

然后进行测试。

npm test
Run Code Online (Sandbox Code Playgroud)

然后“修剪”您的开发依赖项,如下所示,如文档中详细 说明的那样,“将删除您的 devDependency 中指定的包”。

npm prune --production
Run Code Online (Sandbox Code Playgroud)