包:package,代表了一组特定功能的源码集合。
下面列举了前端常用的包管理工具:
npm全称Node Package Manager,翻译为中文意思是『Node 的包管理工具』,npm 是node.js官方内置的包管理工具,是必须要掌握的工具。

npm init。npm init命令的作用是将文件夹初始化为一个『包』, 交互式创建package.json文件。{
"name": "1-npm", //包的名字
"version": "1.0.0", //包的版本
"description": "", //包的描述
"main": "index.js", //包的入口文件
"scripts": { //脚本配置
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", //作者
"license": "ISC" //开源证书
}
初始化过程中的注意事项:
npm init -y或者npm init --yes极速创建package.json。搜索包的方式有两种:
npm s/search 关键字。可以通过npm install和npm i命令安装包。
// 格式
npm install <包名>
npm i <包名>
// 示例
npm install uniq
npm i uniq
运行之后文件夹下会增加两个资源:
安装uniq之后, uniq就是当前这个包的一个 依赖包,有时会简称为依赖。比如我们创建一个包名字为A,A中安装了包名字是B,我们就说B是A的一个依赖包,也会说A依赖B。
我们可以在安装时设置选项来区分依赖的类型,目前分为两类:
npm i -S uniq,npm i --save uniq。npm i -D less,npm i --save-dev less。npm i -g nodemon。npm root -g查看全局安装包的位置。windows默认不允许npm全局命令执行脚本文件,所以需要修改执行策略。

set-ExecutionPolicy remoteSigned。
Path是操作系统的一个环境变量,可以设置一些文件夹的路径,在当前工作目录下找不到可执行文件时,就会在环境变量Path的目录中挨个的查找,如果找到则执行,如果没有找到就会报错。
where nodemonget-command nodemon在项目协作中有一个常用的命令就是npm i,通过该命令可以依据package.json和package-lock.json的依赖声明安装项目依赖。
项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用下面的命令:
// 格式
npm i <包名@版本号>
// 示例
npm i jquery@1.11.2
项目中可能需要删除某些不需要的包,可以使用下面的命令:
// 局部删除
npm remove uniq
npm r uniq
// 全局删除
npm remove -g nodemon
通过配置命令别名可以更简单的执行命令。
配置package.json中的scripts属性:
{
.
.
"scripts": {
"server": "node server.js",
"start": "node index.js",
},
.
.
}
配置完成之后,可以使用别名执行命令:
npm run server
npm run start
不过start别名比较特别,使用时可以省略run:npm start
npm start是项目中常用的一个命令,一般用来启动项目。npm run有自动向上级目录查找的特性,跟require函数也一样。cnpm是一个淘宝构建的npmjs.com的完整镜像,也称为『淘宝镜像』,网址https://npmmirror.com/。cnpm服务部署在国内阿里云服务器上,可以提高包的下载速度。
官方也提供了一个全局工具包cnpm,操作命令与npm大体相同。
我们可以通过npm来安装cnpm工具:npm install -g cnpm --registry=https://registry.npmmirror.com。
cnpm init / cnpm initcnpm i uniqcnpm i -S uniqcnpm i -D uniqcnpm i -g nodemoncnpm icnpm r uniq用npm也可以使用淘宝镜像,配置的方式有两种:直接配置和工具配置。
执行如下命令即可完成配置:npm config set registry https://registry.npmmirror.com/。
使用nrm( npm registry manager)配置npm的镜像地址。
npm i -g nrmnrm use taobaonpm config list,检查registry地址是否为https://registry.npmmirror.com/, 如果"是"则表明成功。nrm ls。yarn是由Facebook在 2016 年推出的新的Javascript包管理工具,官方网址:https://yarnpkg.com/。
yarn官方宣称的一些特点:
可以使用npm安装yarn:npm i -g yarn。
yarn init / yarn init -yyarn add uniq // 生产依赖
yarn add less --dev // 开发依赖
yarn global add nodemon // 全局安装
yarn remove uniq // 删除项目依赖包
yarn global remove nodemon // 全局删除包
yarnyarn <别名>,不需要添加run。yarn global bin来查看。可以通过如下命令配置淘宝镜像:yarn config set registry https://registry.npmmirror.com/。
可以通过yarn config list查看yarn的配置项。
大家可以根据不同的场景进行选择:
我们可以将自己开发的工具包发布到npm服务上,方便自己和其他开发者使用,操作步骤如下:
nrm use npm)。npm login填写相关用户信息。npm publish提交包。后续可以对自己发布的包进行更新,操作步骤如下:
npm publish。执行如下命令删除包:npm unpublish --force。
删除包需要满足一定的条件,https://docs.npmjs.com/policies/unpublish:
在很多语言中都有包管理工具,比如:
| 语言 | 包管理工具 |
|---|---|
| PHP | composer |
| Python | pip |
| Java | maven |
| Go | go mod |
| JavaScript | npm/yarn/cnpm/other |
| Ruby | rubyGems |
除了编程语言领域有包管理工具之外,操作系统层面也存在包管理工具,不过这个包指的是『软件包』。
| 操作系统 | 包管理工具 | 网址 |
|---|---|---|
| Centos | yum | https://packages.debian.org/stable/ |
| Ubuntu | apt | https://packages.ubuntu.com/ |
| MacOS | homebrew | https://brew.sh/ |
| Windows | chocolatey | https://chocolatey.org/ |