我有一个用Typescript编写的与PM2一起运行的应用程序。目前,我编译为JavaScript,然后使用PM2启动该应用程序。我的ecosystem.config.js
文件如下所示:
module.exports = {
apps: [
{
name: 'My Application',
script: './dist/server/index.js',
env_qa: {
PORT: 3001,
NODE_ENV: 'production',
},
env_production: {
PORT: 3000,
NODE_ENV: 'production',
},
},
],
};
我使用以下命令运行它:
pm2 stop ecosystem.config.js --env qa
在开发时,我只运行ts-node server
而不是编译和使用PM2。我最近读到ts-node具有'transpileOnly'或'fast'模式,这意味着它可以在生产中使用。首先,我想知道是否可以在生产环境中使用它。其次,我如何仍然使用PM2来启动我的应用程序,但使用ts-node? p>
答案 0 :(得分:1)
package.json
{
"scripts": {
"pm2": "NODE_ENV=production pm2 start server.ts --watch"
},
答案 1 :(得分:1)
我做了一个简单的解决方案,使用项目根目录下的pm2配置文件:
project
│ pm2.config.js
│ package.json
│ tsconfig.json
│
└───src
│ │ index.ts
└───dist
│ index.js
pm2.config.js
module.exports = {
apps: [
{
name: 'My Application',
script: './dist/index.js',
},
],
};
package.json
"scripts": {
"dev": "ts-node-dev --respawn --transpile-only ./src/index.ts",
"start": "tsc && node ./dist/index.js",
"pm2": "tsc && pm2 start pm2.config.js"
}
注意:如果您愿意,您也可以将 && pm2 save
添加到 pm2 脚本中
现在在开发中,输入:npm run dev
并在生产中,使用 npm run pm2
答案 2 :(得分:0)
package.json 脚本应如下所示:
"scripts": {
"shivkumarscript": "ts-node -T -P server/tsconfig.json server/index.ts"
}
module.exports = {
apps: [
{
name: "NodeServer",
script: "npm",
automation: false,
args: "run shivkumarscript",
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
}
]
}
假设你已经在你的机器上安装了 Node.js、NPM 和 PM2。那么下面应该是通过 pm2 启动应用程序的命令,它将依次运行 npm 脚本(在应用程序的 package.json 文件中提到的命令行):
对于生产环境:
pm2 start ecosystem.config.js --env production --only NodeServer
对于开发环境:
pm2 start ecosystem.config.js --only NodeServer
...还有嘘!伙计们