Node 正常启动(node)、热更启动(nodemon)、部署(pm2)、安装包(npm、cnpm、yarn)、发布包(publish) 、node版本管理(NVM) 常用工具----学习笔记(五)

2023-11-08

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…)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node 正常启动(node)、热更启动(nodemon)、部署(pm2)、安装包(npm、cnpm、yarn)、发布包(publish) 、node版本管理(NVM) 常用工具----学习笔记(五) 的相关文章

随机推荐

  • 项目研发心得总结

    前言 近期因学校实验室项目需求 组建6人小团队研发一个网站 框架采用 NET MVC EF 数据库为SQL Server 简单总结一二 一 数据库设计方面 网站的根基 数据库 最开始源自于和甲方进行需求沟通 由于甲方节奏较缓慢 在未完全确定
  • 用certutil 注册根证书到nss/firefox

    环境 Centos 6 5 certutil 参数 所有命令可参见系统自带帮助 通俗易懂 certutil 选项 参数 root localhost lftshell certutil H A Add a certificate to th
  • e5服务器系列天梯图,至强e5系列cpu天梯图_2020年5月至强e5天梯图排行

    CPU的种类多种多样 性能也不尽相同 有很多朋友都非常关注cpu市场的情况 因为一款CPU性能的好坏 决定了我们电脑的运算能力高低 今天我们主要关注的是英特尔e5系列cpu 为了直观对比e5系列cpu的性能情况 我们可以参考至强e5系列cp
  • int *p = NULL 和*p = NULL 有什么区别

    int p NULL 和p NULL 有什么区别 int p NULL 这时候我们可以通过编译器查看p 的值为0x00000000 这句代码的意思是 定义一个指针变量p 其指向的内存里面保存的是int 类型的数据 在定义变量p 的同时把p
  • springboot整合mybatis-plus,代码自动生成

    Mybatis Plus 简称MP 是一个 Mybatis 的增强工具 在 Mybatis 的基础上只做增强不做改变 为简化开发 提高效率而生 特性 无侵入 Mybatis Plus 在 Mybatis 的基础上进行扩展 只做增强不做改变
  • win11绕过硬件限制的方法

    升级win11有硬件配置要求 所以这让很多硬件设施不合格 又懒的换硬件 还想体验win11新系统的用户很头疼 其中就有Windows11当前不支持该处理器的问题 但这不能说明配置低的电脑就完全失去机会了 绕开微软限制的要求 安装上win11
  • [转]信息安全相关理论题(四)

    26 表示邮件服务器返回代码为临时性失败 xx代表任意数 A 2xx B 3xx C 4xx D 5xx 您的答案 标准答案 C 27 买家称购买商品异常后的正确操作是立即咨询官方客服 A 正确 B 错误 您的答案 标准答案 A 28 网上
  • i.mx287学习笔记10-带参内核模块、程序

    上面是我的微信和QQ群 欢迎新朋友的加入 1 带参程序 这里传递的是字符串 argc表示有几个参数要被传递 其中可执行文件本身也会当做一个参数 include stdio h int main int argc char argv int
  • 数据结构(线性表预习)

    1 基本概念 线性表 List 由零个或多个数据元素组成的有限序列 2 注意 1 线性表是一个序列 2 0个元素构成的线性表是空表 3 线性表中的第一个元素无前驱 最后一个元素无后继 其他元素有且只有一个前驱和后继 4 线性表是有长度的 其
  • 四则表达式的编译过程及生成汇编代码

    1 前序 这是编译原理的实验 自认为是上大学以来做过的最难的一个实验 所以写篇博客记录一下 实验用到的基础知识 C语言 数据结构 汇编 只需简单的了解 开发工具 VC 2 问题描述 编译整数四则运算表达式 将整数四则运算表达式翻译为汇编语言
  • GetDC

    目前win10下程序如果是每监视器dpi感知类型 GetDC获取某一个窗口的上下文时 获取的时96dpi值的像素坐标 逻辑英寸 这个API应该还没有dpi感知上下文 建议获取整个屏幕的DC
  • frp内网穿透详细教程

    前言 frp内网穿透是一个比较方便 快捷的配置 使用也是比较人性化 下面简单介绍下实现过程 配置分服务端和本地端 一 阿里服务端配置 1 1 获取frp的安装包 获取安装包 提取链接 下载frp 0 44 0 linux amd64 tar
  • Android Studio总是依赖最新版本的库文件的方式

    依赖最新版本的方式 例如 implementation com google ar core latest release 关键是冒号后边的latest release PS 不太推荐这种方式来依赖第三方库 第一是提交CI编译时徒增编译时间
  • 利用clang提供的库函数进行c语言常规错误的检测

    前言 感觉很多事情不做就一直不会去做了 在学校的 科创 活动要求下 不得不尝试发论文 但我觉得我跟同学做的东西还是比较适合做Demo 为其他刚开始接触这个工具的童鞋提供参考 正文 继续在ubuntu中进行操作 一共进行三项检测 1 除零检验
  • 解决微信小程序报[ app.json 文件内容错误] app.json app.json 未找到,未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。小程序app.json报错

    编译报错 app json 文件内容错误 app json app json 未找到 原因 由于project config json文件的miniprogramRoot小程序根目录属性找不到aap json的路径 可能是错误的路径 也可能
  • SAP系统与MES系统的数据协同技术方案

    1 MES介绍 本文中提到的MES系统是在西门子公司的SIMATIC IT平台上开发完成 所有的应用子系统进行统一分析 统一设计 统一开发 利用统一的开发平台和数据库系统 保证了管理系统的集成性 高效性 2 数据协同接口包含的内容 在ERP
  • 【AI with ML】第 2 章 :计算机视觉简介

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 华为OD机试真题- 非严格递增连续数字序列-2023年OD统一考试(B卷)

    题目描述 输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列的长度 比如12234属于非严格递增连续数字序列 输入描述 输入一个字符串仅包含大小写字母和数字 输入的字符串最大不超过255个字符 输出描述 最长
  • 305_启动服务防止app劫持

    启动服务防止app劫持 app劫持就是某个应用来监测我们的app的动态 当我们比如启动了某个需要输入密码的界面比如登录 支付这种敏感界面 这个流氓应用就启动一个activity来覆盖我们的activity 这样我们就可能把密码输入到流氓应用
  • Node 正常启动(node)、热更启动(nodemon)、部署(pm2)、安装包(npm、cnpm、yarn)、发布包(publish) 、node版本管理(NVM) 常用工具----学习笔记(五)

    文章目录 1 Node服务启动指令的配制 2 nodemon Node监听文件变化 自动重启服务的方法 3 pm2 线上部署使用pm2能自动守护进程 4 cnpm yarn 安装包 是使用npm cnpm yarn 5 注册与发布包 6 n