npm

Node 的模块管理器

Posted by page on November 8, 2022

npm

官方文档 中文文档

package.json

name:包名,后续在 npm 中搜索全靠它

version:版本号,每发布一次 npm 包就要增加一个版本,每个版本不能重复

description:描述

main:本包入口文件

privatetrue/false 是否为私有。 一般为 false 否则只有自己能使用

flies:暴露的文件夹,指定提交到 npm 文件夹,格式为 ["dist"]

exports:指定模块导出的路径,使用户可以通过特定路径导入模块,如 import "@package-name/xxx";至少包含 { ".": "./index.js" }

keywords: npm 检索的关键字

author:作者

license:ISC

type: "module":包遵循 ESM 模块规范(mjs)

peerDependencies:当前npm包同时依赖环境,不会被安装但会提醒这些依赖以及版本

"peerDependencies": {
  "@babel/eslint-parser": "7.x",
  "eslint": ">=8.24.0"
}

overrides:覆写node_modules的指定包版本,如安装 vite-plugin-eslintnode_modules 的eslint版本过高,可覆写:

"overrides": {
  "eslint": "8.57.0"
}

bin:全局命令,开发全局包/脚手架必备

命令

npm init 初始化包

npm init --scope=name 初始化一个域级包

npm install 安装所有依赖

npm install --production 安装所有生产依赖

npm install name -g 全局下安装包

npm install name --save 安装局部包

npm install name --save-dev 安装开发依赖包

npm uninstall name 移除包

npm update name 更新包

npm cache clean --force 清除缓存

npm run 执行模块包

npm config set registry https://registry.npmmirror.com 设置下载镜像地址

npm publish 根据package.json的name发布包到npm仓库

npm unpublish name --force 卸载npm上传的包

命令参数

npm run build --mode=value --option2=value2

访问:const mode = process.env.npm_config_mode(value)

npx

临时执行下载一个package到缓存目录并运行可执行命令,与 npm init/npm create 类似

发布

登录

npm login

注:

登录命令报错,请确保 registry 地址为 https://registry.npmjs.org/

若无法链接到 registry.npmjs.org 请设置代理后操作 npm config set proxy=http://127.0.0.1:xxxx

发布

更新版本号

发布前更新版本号

npm version patch 如v1.0.1

npm version prepatch 如v1.0.2-0

npm version minor 如v1.1.0

npm version major 如v2.0.0

npm version prerelease --preid=alpha/beta

npm publish

注: 发布默认包含 .gitignore.npmignore 排除之外的所有文件

声明标签

发布测试/先行版本 npm publish --tag beta

  • latest:最后版本,npm install 的就是这个

  • beta:测试版本,一般内测使用,需要指定版本号 install,例如 3.1.0-beta.0

  • next:先行版本,npm install package@next 安装,例如 3.0.2-alpha.0

版本号

  • 全版本号:指定的固定版本号
  • 波浪符号~:固定主版本号和次版本号,修订号可以随意更改
  • 插入符号^:固定主版本号,次版本号和修订号可以随意更改
  • 任意版本*:对版本没有限制,一般不用
  • 或符号:   可以用来设置多个版本号限制规则,如 >= 3.0.0   <= 1.0.0

NVM

github下载 nvm-setup.zip

所有版本:nvm list

安装版本:nvm install 16.18.1

切换版本:nvm use 18.12.1

PM2

一个用于Node.js应用程序的生产流程管理器,具有内置的负载平衡器;

安装:npm i pm2 -g

启动:pm2 start app.js --name appName

npm命令:cross-env NODE_ENV=production pm2 start app.js --name appName

应用列表:pm2 list

自定义配置

生成配置命令:pm2 ecosystem

配置文件:ecosystem.config.js

读取配置启动:pm2 start ecosystem.config.js

查看应用的监控信息:pm2 monit

日志

所有日志:pm2 logs

指定应用与行数:pm2 logs <app-name> --lines 100

清除日志:pm2 flush

控制应用

停止应用:pm2 stop app

停止所有:pm2 stop all

重启应用:pm2 restart app

删除应用:pm2 delete app

删除所有:pm2 kill

问题

node-sass 无法安装成功

  • 要求node-sass与node版本一致

    | NodeJS  | Supported node-sass version |
    |---------|-----------------------------|
    | Node 16 | 6.0+                        |
    | Node 15 | 5.0+                        |
    | Node 14 | 4.14+                       |
    | Node 13 | 4.13+, <5.0                 |
    | Node 12 | 4.12+                       |
    
  • node-gyp要求python2

    安装python2并配置环境变量(高于python3环境变量)后,重新安装 node-sass

其它

lerna 多包/多项目管理

脚手架开发

dumi 组件库开发

Verdaccio 私用库 npm 注册代理 https://xieyufei.com/2021/07/17/Verdaccio.html

release-it: https://juejin.cn/post/7132628356700307487