【问题标题】:How to run build and tests in production environment when devDependencies don't get installed?未安装 devDependencies 时如何在生产环境中运行构建和测试?
【发布时间】:2019-01-24 07:48:42
【问题描述】:

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

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

在没有 devDependencies 的情况下在 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

【问题讨论】:

  • 为什么要在生产环境中运行测试?
  • 因为我没有暂存分支/环境。不管测试如何,我仍然需要运行需要 babel 开发依赖项的构建,因此将测试移动到仅在另一个环境中运行并不能解决问题。

标签: node.js npm deployment continuous-integration babeljs


【解决方案1】:

来自this的回答,

您将希望遵循您的流程以达到效果 以下:

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

npm install

然后进行测试。

npm test

然后如下“修剪”您的开发依赖项,详见 docs 这样做 “将删除你的 devDependencies 中指定的包”。

npm prune --production

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 2010-09-10
    • 2018-12-07
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    相关资源
    最近更新 更多