文章目录
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.youkuaiyun.com/chengxuyuanyonghu/article/details/74910875
4、cnpm、yarn
------ 安装包(是使用npm/cnpm/yarn…)
npm常用命令 https://blog.youkuaiyun.com/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 版本号
--------- 安装指定版本nodejsnvm install stable
--------- 安装最新稳定版nodejs
nvm use 版本
------ 切换到某个版本的node ,只在当前命令窗口有效,关闭后再次打开时,仍是之前node版本nvm use node
------/切换到最新版本的node
nvm alias default 版本号
------ 切换默认node版本到指定的版本,但当前窗口仍延用之前的node版本,下次打开node命令窗口时node新版本生效