启动node项目方式
1、node方式
node [入口js文件路径]
缺点:
1、窗口关闭后服务自动停止,
2、文件变化后需要手动重启
2、npm方式 ----- 通过package.json配制命令
- 第一步,运行
npm init
,生成package.json文件; - 第二步,在package.json中的scripts中配制启动命令,比如将第一种方式的启动命令写入scripts中,比如npm run dev进行如下配置:
{
"name": "cj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": { // 配置启动命令
"dev": "node ./index.js"
},
"author": "",
"license": "ISC"
}
缺点:
1、窗口关闭后服务自动停止,
2、文件变化后需要手动重启
3、nodemon方式
- 第一步,安装nodemon,
npm i nodemon -D
; - 第二步,通过nodemon启动项目,
nodemon [入口js文件路径]
- 第二步,或者通过在package.json中的scripts中配制启动命令,比如npm run dev进行如下配置:
{
"name": "cj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": { // 配置启动命令
"dev": "nodemon ./index.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"nodemon": "^2.0.7"
}
}
缺点:
1、窗口关闭后服务自动停止,
优点:
1、文件变化后自动重启服务
4、pm2方式启动
pm2有两种启动方式,
可通过pm2指定js启动,
也可通过pm2生成配制文件,再通过配制文件启动。
首先,都要安装pm2 npm i pm2 -g
,其次再根据不同方式启动项目
4.1、pm2不区分环境的项目启动方式
pm2 start [入口js文件路径] --watch
// watch可监听文件变化,自动重启项目。
4.2、pm2通过配置文件启动项目
- 第一步,运行
pm2 init
,生成ecosystem.config.js文件,配置不同环境
module.exports = {
apps : [
{
name: "myapp",
script: "./app.js", // 这是入口js,需要根据自己的做出调整
watch: true,
env: { // 默认环境,为生产环境
"NODE_ENV": "production"
},
env_development: { //开发环境
"NODE_ENV": "development",
},
env_test: { //测试环境
"NODE_ENV": "test",
}
}
]
}
注意:env是默认的环境,env_后面的是运行启动项目命令时env后指定的环境名
-
第二步,启动项目
pm2 start ecosystem.config.js --env 环境名
环境名可以是上方指定的development、test,不指定env时,采用默认环境env;
之后在项目任意地方,可通过process.env.NODE-ENV获取到当前环境,再根据不同环境做出相应配置
-
第三步,也可将这个命令配制到package.json中,eg:
运行npm run prod
即可启动生产环境的项目,
运行npm run dev
即可启动开发环境的项目,
运行npm run test
即可启动测试环境的项目,
{
"name": "cj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"prod": "pm2 start ecosystem.config.js --watch",
"dev": "pm2 start ecosystem.config.js --env development --watch",
"test": "pm2 start ecosystem.config.js --env test"
}
}
优点:
1、窗口关闭后服务不会关闭
2、启动时添加 --watch ,即可实现文件变化后自动重启服务
开发/生产环境的配置
方式一,项目启动方式四pm2中的通过配置文件启动可配置启动时的环境
方式二,cross-env 结合 nodemon配置启动环境
- 第一步,安装cross-env ,
npm i cross-env -S
- 第二步,修改package.json中的启动命令,为其设置环境,命令修改为如下
cross-env NODE_ENV=development nodemon [入口js文件路径]
,这里指定环境为developement;
"scripts": {
"start": "cross-env NODE_ENV=development nodemon [入口js文件路径]"
},
建议
本地启动项目用nodemon,
生产上启动项目用pm2