我想向"开始";脚本,所以当我执行npm start
时,首先要运行的是npm install
。
我的package.json如下所示:
.
.
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "DEBUG=my-app node src/index.js",
"dev": "nodemon src/index.js"
},
.
.
.
我考虑在start
脚本中添加npm install
:
"start": "npm install DEBUG=my-app node src/index.js",
但这不起作用,所以我想得到一个建议,无论这是否可能。。
我认为您只使用&;conector。类似:
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "npm install && DEBUG=my-app node src/index.js",
"dev": "nodemon src/index.js"
}
这是一个相当沉重/缓慢的启动,在启动应用程序之前安装所有模块。
这意味着,如果我更改了节点服务器中的某些代码,停止进程并再次运行,就会进行完全安装。我意识到您有一个带有nodemon的开发脚本,但仍然如此。
另一种情况是:如果你的应用程序在实时服务器上崩溃,你需要重新启动它,那么就会进行完全安装。如果一个模块升级了补丁或小版本,会发生什么。这意味着您将启动一个具有不同依赖关系的项目。
如果你在ci/cd中这样做,那么通常会拆分一个管道:
- 安装-npm ci
- 构建/编译-例如,如果您有typescript(而不是您的情况(
- 运行所有测试
- 使用npm修剪删除devDependencies
- 启动流程
你可能会做的是有一个名为";管道";或者什么的,然后叫它。
"pipeline": npm ci && npm run build && npm test && npm prune && npm start
然后将在管道代码中调用此脚本。