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

搜索并安装

搜索并安装一个包

  1. 命令行 npm s xxxnpm search xxx

    npm s dayjs

    此时会出现一个列表列出搜索的关键词的包,找到你想要的包名进行下一步

    不过一般不会使用命令行去搜索包

    我们可以通过 https://www.npmjs.com/ 这个网站来搜索你想要的包,获取相应的包名来安装需要的包

  2. 命令行 npm i xxxnpm install xxx

    npm i dayjs

    项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用npm i 包名@版本号

    npm i dayjs@1.11.7

    安装包之后,文件夹下会新增两个文件

    • node_modules 文件夹,存放下载的包

    • package-lock.json 包的锁文件,用来锁定包的版本

    依赖包:

    当A包中安装了B包,B包就是A包的依赖

  3. 导入并使用

    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 xxxnpm r xxx

npm r dayjs

全局删除包使用 npm remove -g vitenpm r -g vite

npm r -g vite

安装包依赖

一般我们把写好的项目分享给别人时会排除 node_modules 文件夹,git提交默认也会排除它,不仅仅是因为它太大了。

拿到别人排除了 node_modules 的项目时,我们需要重新安装项目需要的依赖的包:npm inpm 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 包管理工具,官方网址:https://yarnpkg.com/

特点

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 服务上,方便自己和其他开发者使用,操作步骤如下:

  1. 创建文件夹,并创建文件 index.js, 在文件中声明函数,使用 module.exports 暴露

  2. npm 初始化工具包,package.json 填写包的信息 (包的名字是唯一的)

  3. 注册账号 https://www.npmjs.com/signup

  4. 激活账号 ( 一定要激活账号 )

  5. 修改为官方的官方镜像

  6. 命令行下 npm login 填写相关用户信息

  7. 命令行下 npm publish 提交包

更新包

后续可以对自己发布的包进行更新,操作步骤如下

  1. 更新包中的代码

  2. 测试代码是否可用

  3. 修改 package.json 中的版本号

  4. 发布更新

    npm publish

删除包

执行如下命令删除包

npm unpublish --force

删除包需要满足一定的条件, https://docs.npmjs.com/policies/unpublish

  • 你是包的作者

  • 发布小于 24 小时

  • 大于 24 小时后,没有其他包依赖,并且每周小于 300 下载量,并且只有一个维护者

阅读剩余
THE END