1、Node服务启动指令的配制
通过之前学习知道,启动服务是通过执行node js文件
来启动的,这里我们可以通过在package.json中的scripts中配制指令
来通过指令来启动服务
app.js
const http = require('http');
const server = http.createServer((req,res)=>{
res.end('hello world!yiyueqinghui!')
})
server.listen(3000,'127.0.0.1',()=>{
console.log('server 启动成功!')
})
通常启动这个服务的方式是 node app.js所在的路径
,
但是这是我们通过配制package.json,设置指令来启动服务,package.json配制如下,
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
其实就是在scripts中新增指令 “start”:“node app.js”,之后通过npm start
指令来执行node app.js指令,从而启动服务。(这也就是vue配制启动命令的方式)
2、nodemon
---- Node监听文件变化,自动重启服务的方法
正常情况下,js文件的变化,node服务就需要重新手动重启一次,
这里通过nodemon
第三方模块来实现一旦文件变化,服务就自动重启的功能
配制nodemon步骤如下: (用于当文件改变时,自动重启服务)
-
1、安装模块 npm install nodemon -D
(-D是配制在运行环境中)
-
2、修改package.json中的scripts中的启动命令,即使用nodemon来启动服务而非node
这里把原先npm start改为了npm start:node,而npm start 改为了用nodemon来启动服务,这样的话,用npm start启动服务后,就可文件变化后,服务自动重启)
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start:node": "node src/app.js",
"start":"nodemon src/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"nodemon": "^2.0.7"
}
}
-
3、通过增加nodemon.json 配置 指定的要监听的文件(优化性能,指定需要监听的文件,以减少不必要的重启) -------- 此步属于性能优化,可以跳过相应配制
这一步也可以不要,但是所有文件变化都会触发服务的重启,这里只是为了优化性能,减少不必要的重启。
在与package.json同级的目录上,新建一个nodemon.json
文件,写入如下,
{
"watch":["./*.js"] //这里是指监听当前目录下的js文件,其它文件的变化不会触发服务的重启
}
3、pm2
------ 线上部署使用pm2能自动守护进程
常规部署的问题
在node窗口中启动服务后,如果关掉node窗口后,nodejs 服务就自动关掉,无法保持一下启动状态;
这里使用pm2可以保证即使关闭窗口,node服务也会在后台一直启动;
配制步骤如下
-
1、安装pm2
npm install -g pm2
-
2、安装服务依赖
npm install
-
3、启动服务
pm2 start 【入口js文件的路径】
启动命令参数说明:
--watch
:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
-i --instances
:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。
--ignore-watch
:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如–ignore-watch=“test node_modules “some scripts””
-n --name
:应用的名称。查看应用信息的时候可以用到。
-o --output
·标准输出日志文件的路径
-e --error <path>
: 错误输出日志文件的路径。
这时关闭终端后,服务仍正常运行。
这里重点推荐–watch参数,
pm2 start 【入口js文件的路径】--watch
可以监听目录文件变化,自动重启项目,这就实现了nodemon监听变化重启的功能,但相比nodemon,优势在于关闭窗口后,服务仍然保持启动状态,除非手动去运行关闭命令
其它pm2常用命令
// 1、查看进程
pm2 list #查看PM2列表中所有的进程
pm2 show 0 #查看进程详细信息,0为PM2进程id
// 2、停止服务
pm2 stop all #停止PM2列表中所有的进程
pm2 stop 0 #停止PM2列表中进程为0的进程
// 3、重载
pm2 reload all #重载PM2列表中所有的进程
pm2 reload 0 #重载PM2列表中进程为0的进程
//4、重启
pm2 restart all #重启PM2列表中所有的进程
pm2 restart 0 #重启PM2列表中进程为0的进程
// 5、更新
pm2 update
// 6、更多命令参数请查看帮助
pm2 --help
// 7、查看实时日志
pm2 logs
pm2常用命令的参数链接:https://blog.csdn.net/chengxuyuanyonghu/article/details/74910875
4、cnpm、yarn
------ 安装包(是使用npm/cnpm/yarn…)
npm常用命令 https://blog.csdn.net/yiyueqinghui/article/details/114526193
cnpm安装
npm install cnpm -g --registry=https://registry.npm.taobao.org
yarn安装
npm install -g yarn
5、注册与发布包
- 1、注册账号:https://www.npmjs.com/ (邮箱验证)
- 2、
npm adduser 输⼊刚刚注册好的⽤户名和密码
;
- 3、查看源地址是否是官方地址
查询源地址是否是官方地址 https://registry.npmjs.org/ ------- npm config list
如果源地址不是官方地址,则修改源地址 ---------- npm config set registry https://registry.npmjs.org/
通常情况下,可以通过切换源地址为淘宝源地址来加快下载速度,(把源改为淘宝源地址可以实现cnpm),命令如下
npm config set registry https://registry.npm.taobao.org/
改为官方源地址的命令
npm config set registry https://registry.npmjs.org/
-
4、发布自己的包npm publish
-
第一步,初始化包-----发布前必须有package.json,因此需要先初始化 npm init -y
-
第二步,写自己的包
-
第三步,发布之前检测包名是否已被占用,包名即package.json中的name所对应的值。
在npm官网中(https://www.npmjs.com/)搜索包名,判断是否已存在,若存在则修改;
-
第四步,发布 npm publish
,之后在官网搜索自己发布的包
- 5、更新包,必须修改package.json中的版本号,即version
- 6、删除包 ,进入包所在的目录,
npm unpublish --force
6、nvm
----- 对node版本的管理
当一个电脑上有多个node版本时,需要对每个版本进行管理时,可以使用nvm,来切换当前命令窗口的node的版本。
安装nvm
- nvm是mac环境下管理nodejs的⼯具。
在windows环境下推荐使⽤nvmw或者nvmwindows;
Nvm-windows 下载地址 https://github.com/coreybutler/nvm-windows 下载 nvmsetup.zip
NVM常⽤指令
-
nvm ls-remote
-------- 查看node当前远程所有版本
-
nvm ls
---------- 当前本机上安装的所有node的版本
-
nvm install 版本号
--------- 安装指定版本nodejs
-
nvm install stable
--------- 安装最新稳定版nodejs
-
nvm use 版本
------ 切换到某个版本的node ,只在当前命令窗口有效,关闭后再次打开时,仍是之前node版本
-
nvm use node
------/切换到最新版本的node
-
nvm alias default 版本号
------ 切换默认node版本到指定的版本,但当前窗口仍延用之前的node版本,下次打开node命令窗口时node新版本生效
7、nrm
------ 对npm 源的管理(是使用npm/cnpm/yarn…)