您可以在 package.json 中为 npm 脚本设置别名吗?
Can you set aliases for npm scripts inside package.json?
我有一个用 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"
部署时:
删除了开发依赖,转译了应用程序,命令是
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-node
的名称 space 设置为 [=18] 中的 ts-node || node
=] 这样它就可以携带了..
我知道在 运行 npm scripts
时添加了所有依赖项的名称 space,所以这确实发生在幕后,但是是否有任何内置功能可以做到这一点手动?
我认为最好的解决方案是使用 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 node 的东西来启动应用程序
我有一个用 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"
部署时:
删除了开发依赖,转译了应用程序,命令是
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-node
的名称 space 设置为 [=18] 中的 ts-node || node
=] 这样它就可以携带了..
我知道在 运行 npm scripts
时添加了所有依赖项的名称 space,所以这确实发生在幕后,但是是否有任何内置功能可以做到这一点手动?
我认为最好的解决方案是使用 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 node 的东西来启动应用程序