Node.js包管理工具
什么是包
包是一组特定功能的源码集合
什么是包管理工具
管理包的工具,可以对包进行安装、更新、删除、上传等操作
前端常用的包管理工具
常用包管理工具
-
npm
-
yarm
-
cnpm
npm
npm 全称 Node Package Manager
npm 是 node.js 官方内置的包管理工具
在安装node.js时,会默认安装npm
可以在终端输入 npm -v
来查看当前npm的版本
初始化
创建一个空目录,在终端打开,使用npm init
命令初始化一个包,然后根据提示填写信息,当一切准备就绪后,你的根目录就会创建一个名为package.json
的文件
{
"name": "npm",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
package.json
可以手动创建与修改,使用 npm init -y
或者 npm init --yes
极速创建 package.json
搜索并安装
搜索并安装一个包
-
命令行
npm s xxx
或npm search xxx
npm s dayjs
此时会出现一个列表列出搜索的关键词的包,找到你想要的包名进行下一步
不过一般不会使用命令行去搜索包
我们可以通过 https://www.npmjs.com/ 这个网站来搜索你想要的包,获取相应的包名来安装需要的包
-
命令行
npm i xxx
或npm install xxx
npm i dayjs
项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用npm i 包名@版本号
npm i dayjs@1.11.7
安装包之后,文件夹下会新增两个文件
-
node_modules
文件夹,存放下载的包 -
package-lock.json
包的锁文件,用来锁定包的版本
依赖包:
当A包中安装了B包,B包就是A包的依赖
-
-
导入并使用
const dayjs = require("dayjs"); // 导入 dayjs 包 console.log(dayjs().format()); // 2023-06-03T23:37:37+08:00 console.log(dayjs().format("YYYY-MM-DD HH:mm:ss")); // 2023-06-03 23:37:37
生产依赖和开发依赖
生产依赖: 在开发和上线运行都需要的包,比如vue
开发依赖: 只在开发的时候需要的包,比如less
类型 | 命令 | 补充 |
---|---|---|
生产依赖 | npm i -S vue npm i --save vue | -S 等效于 --save,-S 是默认选项 包信息保存在 package.json 中 dependencies 属性 |
开发依赖 | npm i -D less npm i --save-dev less | -D 等效于 --save-dev 包信息保存在 package.json 中 devDependencies 属性 |
全局安装
安装包时,带上-g
参数进行全局安装
npm install vite -g
一般我们都安装工具包,比如我通常会全局安装 vite
前端构建工具
说明:
-
全局安装的包可以在任意位置运行
-
npm root -g
可以查看全局安装包的位置 -
不是所有的包都适合全局安装
查看已安装的包
查看项目中已安装的包(项目中必须包含 package.json
文件)
npm ls
查看全局已安装的包
npm ls -g
删除包
局部删除包使用 npm remove xxx
或 npm r xxx
npm r dayjs
全局删除包使用 npm remove -g vite
或 npm r -g vite
npm r -g vite
安装包依赖
一般我们把写好的项目分享给别人时会排除
node_modules
文件夹,git提交默认也会排除它,不仅仅是因为它太大了。
拿到别人排除了 node_modules
的项目时,我们需要重新安装项目需要的依赖的包:npm i
或 npm install
npm i
配置命令别名
通过配置命令别名可以更简单的执行命令
配置 package.json 中的 scripts
属性
{ "name": "npm_demo", "version": "1.0.0", "description": "This is a demonstration.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "index": "node index.js" // 添加一个命令,命令的名称为 index ,命令的功能是执行index.js }, "author": "byboy", "license": "ISC", "dependencies": { "dayjs": "^1.11.7" } }
使用命令
npm run index
此时会执行index.js
使用国内镜像站
为了提高包的下载速度,我们可以使用国内镜像站来下载包
npm直接配置淘宝镜像
npm config set registry https://registry.npmmirror.com
查看当前 npm 的镜像地址
npm config get registry
cnpm
cnpm 是一个淘宝构建的
npmjs.com
的完整镜像,地址:https://npmmirror.com/package/cnpm
安装
全局安装cnpm
npm i -g cnpm
使用
npm 和 cnpm使用方法基本一致
功能 | 命令 |
---|---|
初始化 | cnpm init / cnpm init -y |
安装包 | cnpm i dayjs cnpm i -S dayjs cnpm i -D less cnpm i -g vite |
删除 | cnpm r dayjs |
安装项目依赖 | cnpm i |
例如:我原来使用npm安装dayjs会使用npm i dayjs
,当使用cnpm的时候直接cnpm i dayjs
,其他用法亦是如此
注意:如果使用cnpm出现以下报错
cnpm : 无法加载文件 C:\Users\byboy\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID =135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + cnpm i uniq + ~~~~ + CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
解决办法:
以管理员身份运行 PowerShell ,在命令行中输入set-ExecutionPolicy RemoteSigned
,输入A,然后回车即可
yarn
yarn 是由 Facebook 在 2016 年推出的新的 Javascript 包管理工具,官方网址:
特点
yarn 官方宣称的一些特点
-
速度超快:yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快
-
超级安全:在执行代码之前,yarn 会通过算法校验每个安装包的完整性
-
超级可靠:使用详细、简洁的锁文件格式和明确的安装算法,yarn 能够保证在不同系统上无差异的工作
安装
全局安装yarn
npm i -g yarn
使用
功能 | 命令 |
---|---|
初始化 | yarn init / yarn init -y |
安装包 | yarn add dayjs yarn add less --dev yarn global add vite |
删除包 | yarn remove dayjs yarn global remove nodemon |
安装项目依赖 | yarn |
运行命令别名 | yarn <别名> # 不需要添加 run |
全局安装包后,提示:'xxx' 不是内部或外部命令,也不是可运行的程序 的问题
解决方法:
获取yarn全局安装包的存放路径
yarn global bin
然后将输出的目录添加到系统环境变量中
再次使用全局包的命令就可以正常使用了
配置镜像
可以通过如下命令配置淘宝镜像
yarn config set registry https://registry.npmmirror.com/
可以通过 yarn config list
查看 yarn 的配置项
管理发布包
创建与发布
我们可以将自己开发的工具包发布到 npm 服务上,方便自己和其他开发者使用,操作步骤如下:
-
创建文件夹,并创建文件 index.js, 在文件中声明函数,使用 module.exports 暴露
-
npm 初始化工具包,package.json 填写包的信息 (包的名字是唯一的)
-
注册账号
-
激活账号 ( 一定要激活账号 )
-
修改为官方的官方镜像
-
命令行下
npm login
填写相关用户信息 -
命令行下
npm publish
提交包
更新包
后续可以对自己发布的包进行更新,操作步骤如下
-
更新包中的代码
-
测试代码是否可用
-
修改
package.json
中的版本号 -
发布更新
npm publish
删除包
执行如下命令删除包
npm unpublish --force
删除包需要满足一定的条件,
你是包的作者
发布小于 24 小时