Coo*_*oop 10 javascript typescript pm2
我有一个用 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',
},
},
],
};
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行它:
pm2 stop ecosystem.config.js --env qa
在开发时,我只是运行ts-node server而不是编译和使用 PM2。我最近读到 ts-node 有一个“transpileOnly”或“fast”模式,这意味着它可以用于生产。首先,我想知道这是否可以在生产环境中使用。其次,我如何仍然使用 PM2 来启动我的应用程序但使用 ts-node?
iva*_*kov 16
该运行时会导致极高的内存消耗和服务器过载,因此不应在生产中使用。
\nhttps://pm2.io/docs/runtime/integration/transpilers/
\n\n\n我们不建议在生产中使用它,因为它会减慢您的应用程序的速度。
\n
"scripts": {\n "pm2": "NODE_ENV=production pm2 start server.ts --watch"\n}\nRun Code Online (Sandbox Code Playgroud)\n您可以使用单独的命令将 TypeScript 转换为 JavaScript 并使用npm run pm2(或者npm run pm2:staging如果您有暂存环境)运行它。
仅当您需要使用生产和临时环境时,才应在本地使用命令npm run prod和。npm run staging
"scripts": {\n "pm2": "NODE_ENV=production pm2 start build/server.js --watch -i max",\n "pm2:staging": "NODE_ENV=staging pm2 start build/server.js --watch -i max",\n\n "prod": "NODE_ENV=production node build/server.js",\n "staging": "NODE_ENV=staging node build/server.js",\n\n "dev": "HTTPS=true NODE_ENV=development ts-node-dev --inspect --respawn src/server.ts",\n\n "build": "rimraf build && tsc -p tsconfig.json",\n \n "test": "NODE_ENV=test nyc ./node_modules/.bin/mocha --require ts-node/register ./src/test/**/**/**/**/*.test.ts",\n}\nRun Code Online (Sandbox Code Playgroud)\n你的tsconfig.json compilerOptions应该看起来像这样:
"compilerOptions": {\n "target": "es5",\n "module": "commonjs",\n "lib": ["es2015", "dom"],\n "sourceMap": true, \n "outDir": "./build",\n\n "strict": true,\n "strictPropertyInitialization": false,\n\n "noUnusedLocals": true,\n "noUnusedParameters": true,\n "noImplicitReturns": true,\n "noFallthroughCasesInSwitch": true,\n\n "moduleResolution": "node",\n "types": ["reflect-metadata"],\n "esModuleInterop": true,\n "inlineSources": true,\n\n "experimentalDecorators": true,\n "emitDecoratorMetadata": true,\n "skipLibCheck": true\n}\nRun Code Online (Sandbox Code Playgroud)\nPM2 可以生成启动脚本并配置它们,以在预期(和意外)机器重新启动时保持进程列表完整。这对于保持自动化很重要。https://pm2.keymetrics.io/docs/usage/startup/
\npm2 unstartup\npm2 startup\npm2 save\nRun Code Online (Sandbox Code Playgroud)\n
package.json 脚本应如下所示:
"scripts": {
"shivkumarscript": "ts-node -T -P server/tsconfig.json server/index.ts"
}
Run Code Online (Sandbox Code Playgroud)
module.exports = {
apps: [
{
name: "NodeServer",
script: "npm",
automation: false,
args: "run shivkumarscript",
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
假设你的机器上已经安装了 Node.js、npm 和 PM2。下面应该是通过 pm2 启动应用程序的命令,该命令将依次运行 npm 脚本(应用程序的 package.json 文件中提到的命令行):
对于生产环境:
pm2 start ecosystem.config.js --env production --only NodeServer
Run Code Online (Sandbox Code Playgroud)
对于开发环境:
pm2 start ecosystem.config.js --only NodeServer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17515 次 |
| 最近记录: |