你好同学,我是沐爸,欢迎点赞、收藏和关注!个人知乎、公众号"沐爸空间"
介绍
npm(Node Package Manager) 是 node.js 官方内置的包管理工具,可以对包进行安装、更新、下载、上传、删除等操作。常用的包管理工具还有Yarn、Cnpm。
【包】英文单词 package,代表了一组特定功能的源码集合。
安装过 node ,即可通过 node -v
查看 npm 的版本。
npm 初始化包
npm init
注意:
- package name(包名)不能使用中文、大写,默认值是文件夹的名称,所以文件夹名称也不能使用中文和大写。
- version(版本号)要求 x.x.x 的形式定义,x 必须是数字,默认值是1.0.0。
- package.json 可以手动创建与修改。
- 使用 npm init -y 或者 npm init --yes 可快速创建 package.json。
npm 搜索包
方式一:在 npm 官网 npm | Home 中搜索(推荐方式)。
方式二:使用 npm search 命令搜索,如 "npm search express"。
npm 安装包
# 局部安装
npm install [packageName]
# 全局安装
npm install [packageName] -g
# 安装最新版本
npm install [packageName]@latest
# 安装指定版本
npm install [packageName]@1.1.1
# 安装指定区间的版本
npm install [packageName]@">=1.1.1 <2.0.0"
npm 开发依赖和生产依赖
只在开发阶段需要的依赖属于开发依赖,在开发阶段和生产阶段都需要的依赖属于生产依赖。install 命令可以通过参数区分两种依赖的类型。npm install [packageName]
默认安装的是生产依赖。
- --save:生产依赖,模块名将被添加到 dependencies 属性中,可以简写为 -S。
- --save-dev: 开发依赖,模块名将被添加到 devDependencies 属性中,可以简写为 -D。
npm install vue --save
npm install less --save-dev
# 或者
npm install vue -S
npm install less -D
以蛋炒饭为例,需要大米、油、葱、鸡蛋、锅、煤气、铲子等。其中锅、煤气和铲子属于开发依赖,只在制作阶段使用。而大米、油、葱、鸡蛋属于生产依赖,在制作和食用时都会用到。
安装时不确定是生产依赖或开发依赖的话,也可以参考 npm 包的 readme.md 文件。
npm 全局安装
全局安装命令
我们可以执行安装选项 -g
进行全局安装。在任意位置打开命令行,都可进行全局安装。
npm install nodemon -g
全局安装完成之后就可以在命令行的任何位置运行 nodemon
命令。nodemon 命令的作用是自动重启 node 应用程序。
查看全局安装包的存放位置:
npm root -g
将全局安装的 npm 包升级到最新版本
npm install packageName@latest -g
修改 windows 执行策略
windows 默认不允许 npm 全局命令执行脚本,所以需要修改执行策略。
1.搜索 Windows PowerShell,点击右键,以管理员身份运行。
2.输入命令 set-ExecutionPolicy remoteSigned
后按 enter 键。
npm 更新包
# 将本地包升级到最新版本
npm update [packageName]
# 将全局包升级到最新版本
npm update [packageName] -g
注意:
1.将本地包升级到最新版本时,node_modules 中的依赖会更新到最新版本,但本地的 package.json 中的packageName 的版本号不会变,而 package-lock.json 会记录 packageName 最新的版本号。
2.推荐使用 npm i [packageName]@latest
代替 npm update [packageName]
,虽然两者功能一样,但前者会更新本地 package.json 中的版本号。
npm 卸载包
# 本地卸载包
npm uninstall [packageName]
# 全局卸载包
npm uninstall [packageName] -g
npm 查看包
1.查看全局安装包
npm list -g
C:\Program Files\nodejs -> .\
├── @vue/cli@5.0.8
├── corepack@0.28.0
├── express@4.19.2
├── nodemon@3.1.3
├── npm@10.5.2
├── nrm@1.2.6
└── pnpm@9.1.4
2.查看指定包的详情
npm show [packageName]
如执行 npm show dayjs
,返回结果:
dayjs@1.11.11 | MIT | deps: none | versions: 124
2KB immutable date time library alternative to Moment.js with the same modern API
https://day.js.org
keywords: dayjs, date, time, immutable, moment
dist
.tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.11.tgz
.shasum: dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e
.integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==
.unpackedSize: 665.8 kB
maintainers:
- iamkun <kunhello@outlook.com>
dist-tags:
alpha: 2.0.0-alpha.4 latest: 1.11.11
published 2 months ago by iamkun <kunhello@outlook.com>
3.查看包的历史版本
npm view [packageName] versions
执行 npm view axios versions
,返回结果:
[
'0.1.0', '0.2.0', '0.2.1', '0.2.2',
'0.3.0', '0.3.1', '0.4.0', '0.4.1',
'0.4.2', '0.5.0', '0.5.1', '0.5.2',
'0.5.3', '0.5.4', '0.6.0', '0.7.0',
'0.8.0', '0.8.1', '0.9.0', '0.9.1',
'0.10.0', '0.11.0', '0.11.1', '0.12.0',
'0.13.0', '0.13.1', '0.14.0', '0.15.0',
'0.15.1', '0.15.2', '0.15.3', '0.16.0',
'0.16.1', '0.16.2', '0.17.0', '0.17.1',
'0.18.0', '0.18.1', '0.19.0-beta.1', '0.19.0',
'0.19.1', '0.19.2', '0.20.0-0', '0.20.0',
'0.21.0', '0.21.1', '0.21.2', '0.21.3',
'0.21.4', '0.22.0', '0.23.0', '0.24.0',
'0.25.0', '0.26.0', '0.26.1', '0.27.0',
'0.27.1', '0.27.2', '0.28.0', '0.28.1',
'1.0.0-alpha.1', '1.0.0', '1.1.0', '1.1.1',
'1.1.2', '1.1.3', '1.2.0-alpha.1', '1.2.0',
'1.2.1', '1.2.2', '1.2.3', '1.2.4',
'1.2.5', '1.2.6', '1.3.0', '1.3.1',
'1.3.2', '1.3.3', '1.3.4', '1.3.5',
'1.3.6', '1.4.0', '1.5.0', '1.5.1',
'1.6.0', '1.6.1', '1.6.2', '1.6.3',
'1.6.4', '1.6.5', '1.6.6', '1.6.7',
'1.6.8', '1.7.0-beta.0', '1.7.0-beta.1', '1.7.0-beta.2',
'1.7.0', '1.7.1', '1.7.2'
]
npm 安装项目依赖
在项目协作中有一个常用的命令就是 npm i
,通过该命令可以依据 package.json 和 package-lock.json 的依赖声明安装项目依赖。
npm i
npm install
npm 执行脚本
npm run 用于执行脚本。package.json 文件有一个 scripts 字段,可以用于指定脚本命令,供 npm 直接调用。
npm run serve
// package.json
{
"name": "demo",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"serve": "node index.js"
},
"keywords": [],
"author": "muba",
"license": "ISC",
"description": ""
}
// index.js
function sum (a, b) {
return a + b
}
console.log(sum(1, 1))
管理发布包
创建与发布
我们可以将自己开发的工具包发布到 npm 服务器上,方便自己和其他开发者使用,操作步骤如下:
- 创建文件夹,并创建文件 index.js ,在文件中声明函数,并使用 module.exports 暴露
- npm 初始化工具包,package.json 填写包的信息【包名是唯一的,作者和描述必填!】
- 注册账号 npm | Sign Up
- 激活账号(一定要激活账号)
- 修改为官方镜像(命令行中运行nrm use npm)【需要切到 npm 官方镜像才能登录!】
- 命令行下
npm login
填写相关用户信息 - 命令行下
npm publish
提交包
注:在终端执行 npm login
登录时,如果提示要跳转到浏览器登录,可以执行 npm login --auth-type=legacy
命令强制在终端登录。
更新包
后续可以对自己发布的包进行更新,操作步骤如下:
- 更新包中的代码
- 测试代码是否可用
- 必须修改 package.json 中的版本号!。
- 发布更新
npm publish
删除包
执行以下命令删除包
npm unpublish --force
npm unpublish <packageName>@<version> // 删除包的指定版本
注意:删除包需要满足一定的条件:
- 你是包的作者
- 发布小于 24 小时
- 大于 24 小时后,没有被其他包所依赖,并且每周小于 300 下载量,并且只有一个维护者。
- 删除包可能不会立即生效,可以过段时间重试。
其他
查看帮助
# 查看帮助
npm help // 如:npm help init
npm command -h // 如:npm init -h
# 查看 npm 各个命令的简单用法
npm -l
npm cache默认路径
C:\Users\用户名\AppData\Local\npm-cache
清除 npm 缓存
npm cache clean --force
npm 设置环境变量
npm set
用来设置环境变量。设置完环境变量后,再执行 npm init
的时候,package.json 的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。
npm set init-author-name 'Your name'
npm set init-author-email 'Your email'
npm set init-author-url 'http://yourdomain.com'
npm set init-license 'MIT'
关联文章: