您可以在package.json中为npm脚本设置别名吗?

时间:2018-10-04 10:23:19

标签: 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"

部署时:

dev依赖关系被删除,应用被编译,命令被

  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"

因此,我被迫将其保留在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"
},

我宁愿有一个在两者中都可以使用的命令


为此,我在部署服务器中设置了以下别名

alias ts-node=/usr/bin/node

因此,所有这些现在对两者都适用。

 "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",
}

但这不是一个很好的解决方案,它使我无法将其部署到其他任何地方。.我宁愿以此方式将right-nodets-node || node的名称空间设置为package.json,便携式。

我知道在运行npm scripts时会添加所有依赖项的名称空间,所以这确实在幕后发生,但是有内置功能可以手动执行吗?

1 个答案:

答案 0 :(得分:2)

我认为最好的解决方案是与NODE_ENV一起使用,但是首先,您需要安装:

npm install if-env --save

,然后在脚本中:

"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"

}

在服务器上,您需要将NODE_ENV设置为生产

在Linux上:

export NODE_ENV=production

在生产中,我建议使用pm2或foverer insted节点启动应用程序