lon*_*556 9 node.js npm package.json npm-scripts
我有一个项目写在 Typescript
在本地开发时:
ts-node 作为开发依赖项安装,命令是
to start: "ts-node src/index"
to init: "ts-node bin/init"
to init db: "ts-node bin/database-init"
to migrate db: "ts-node bin/database-migrate"
to add users: "ts-node bin/add-users"
Run Code Online (Sandbox Code Playgroud)
部署时:
开发依赖项被删除,应用程序被转换,命令是
to start: "node src/index"
to init: "node bin/init"
to init db: "node bin/database-init"
to migrate db: "node bin/database-migrate"
to add users: "node bin/add-users"
Run Code Online (Sandbox Code Playgroud)
因此,我被迫在我package.json将继续增长的情况下保持这一点
"scripts": {
"start": "ts-node src/index",
"start:js": "node src/index",
"init": "ts-node bin/init",
"init:js": "node bin/init",
"db:init": "ts-node bin/db-init",
"db:init:js": "node bin/db-init",
"db:migrate": "ts-node bin/db-migrate",
"db:migrate:js": "node bin/db-migrate",
"add:users": "ts-node bin/add-users",
"add:users:js": "node bin/add-users"
},
Run Code Online (Sandbox Code Playgroud)
我更愿意有一个可以同时适用于两者的命令
为此,我在部署服务器中设置了以下别名
alias ts-node=/usr/bin/node
Run Code Online (Sandbox Code Playgroud)
因此,所有这些现在都适用于两者。
"scripts": {
"start": "ts-node src/index",
"init": "ts-node bin/init",
"db:init": "ts-node bin/db-init",
"db:migrate": "ts-node bin/db-migrate",
"add:users": "ts-node bin/add-users",
}
Run Code Online (Sandbox Code Playgroud)
但是,这是不是一个伟大的解决方案,使我从其他地方部署它。我喜欢设置的名称空间right-node到ts-node || node内部package.json这种方式将是便携式..
我知道在运行时添加了所有依赖项的命名空间npm scripts,所以这确实发生在幕后,但是是否有任何内置功能可以手动执行此操作?
我认为最好的解决方案是使用 NODE_ENV 但首先,您需要安装:
npm install if-env --save
Run Code Online (Sandbox Code Playgroud)
然后在脚本中:
"scripts": {
"start": "if-env NODE_ENV=production ?? npm run start:prod || npm run start:dev",
"start:dev": "ts-node src/index",
"start:prod": "node src/index"
Run Code Online (Sandbox Code Playgroud)
}
在服务器上,您需要将 NODE_ENV 设置为生产
在 Linux 上:
export NODE_ENV=production
Run Code Online (Sandbox Code Playgroud)
对于生产,我建议使用 pm2 或 foverer insted node 之类的东西来启动应用程序
| 归档时间: |
|
| 查看次数: |
10955 次 |
| 最近记录: |