包管理工具
管理 包 的应用软件,可以对 包 进行下载 安装,更新,删除,上传 等操作。
借助包管理工具,可以快速开发项目,提升开发效率。
包管理工具是一个通用的概念,很多编程语言都有包管理工具,所以掌握好包管理工具非常重要。
常用的包管理工具
- npm
- yarn
- cnpm
npm
npm 全称 Node Package Manager,翻译为中文意思是 Node的包管理工具。
npm 是node.js官方内置的包管理工具,是必须要掌握的工具。
npm的安装
node.js在安装时会自动安装npm,所以如果你已经安装好了node.js,就可以直接使用npm,可以通过 npm -v查看版本测试号,如果显示版本号说明安装成功,反之安装失败。
npm的基本使用
初始化
创建一个空目录,然后以此目录为工作目录启动命令行工具,指定 npm init
npm init 命令的作用是将文件夹初始化为一个 包 ,交互式创建package.json文件
package.json 是包的配置文件,每个包都必须要有 package.json
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" #开源证书
}
初始化的过程中还有一些注意事项:
- package name(包名)不能使用中文、大写,默认值是文件夹的名字,所以文件夹名称也不能使用中文和大写。
- version(版本号)要求 x.x.x 的形式定义,x 必须是数字,默认值为1.0.0。
- ISC证书与MIT证书功能上是相同的,关于开源证书扩展阅读。https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
- package.json可以手动创建与修改。
- 使用npm init -y 或者 npm init --yes 可以极速创建package.json。
搜索包
搜索包的方式有两种:
- 命令行 npm s/search关键字
- 网站搜索 npm | Home
下载安装包
可以通过npm install 和 npm i 命令安装包
# 格式
npm install <包名>
npm i <包名>
# 示例
npm install axios
npm i axios
运行之后文件夹下会增加两个资源:
- node_modules文件夹:存放下载的包
- package-lock.json包的锁文件:用来锁定包的版本
安装axios之后,axios就是当前这个包的一个依赖包,有时会简称依赖。
比如我们创建一个包名字为A,A中安装了包名字是B,我们就说B是A的一个依赖包,也会说A依赖B。
require导入npm包的基本流程
- 在当前文件夹下 node_modules中寻找同名的文件夹。
- 在上级目录中下的node_modules中寻找同名的文件夹,直至找到磁盘根目录。
生产环境与开发环境
开发环境是程序员 专门用来写代码 的环境,一般是指程序员的电脑,开发环境的项目一般 只能程序员自己访问。
生产环境是项目 代码正式运行 的环境,一般是指正式的服务器电脑,生产环境的项目一般 每个客户都可以访问。
生产依赖与开发依赖
我们可以在安装时设置选项来区分 依赖的类型,目前分为两类:
类型 | 命令 | 补充 |
---|---|---|
生产依赖 | npm i -S axios npm i --save axios | -S等效于 --save,-S是默认选项 包信息保存在package.json中的dependencies属性 |
开发依赖 | npm i -D less npm i --save-dev less | -D等效于 --save-dev 包信息保存在package.json中的devDependencies属性 |
举个例子方便理解,比如说做蛋炒饭需要用到 大米 , 油 , 葱 , 鸡蛋 , 锅 , 煤气 , 铲子 等。
其中
锅 、 煤气 、 铲子
属于开发依赖,只在制作阶段使用,而
大米 、 油 、 葱 、鸡蛋
属于生产依赖,在制作与最终食用都会用到,所以
开发依赖
是只在开发阶段使用的依赖包,而生产依赖
是开发阶段和最终上线运行阶段都用到的依赖包。
全局安装
可以执行安装选项 -g 进行全局安装
npm i -g nodemon
全局安装完成之后就可以在命令行的任意位置运行nodemon命令,该命令的作用是 自动重启node应用程序。
说明:
- 全局安装的命令不受工作目录位置影响
- 可以通过 npm root -g 查看全局安装包的位置
- 不是所有的包都适合全局安装,只有全局类的工具才适合,可以通过查看包的官方文档来确定安装方式。
修改windows执行策略
windows 默认不允许npm全局命令执行脚本文件,所以需要修改执行策略
- 以管理员身份打开powershell命令行
- 键入命令
set-ExecutionPolicy remoteSigned
- 键入 A 然后敲回车 👌
- 如果不生效,可以尝试重启 vscode
环境变量path
Path是操作系统的一个环境变量,可以设置一些文件夹的路径,在当前目录下找不到可执行文件时,就会在环境变量Path的目录中挨个的查找,如果找到则执行,如果没有找到就会报错。
补充说明:
- 如果希望某个程序在任何工作目录下都能正常运行,就应该将该程序的所在目录配置到环境变量 Path中
- windows下查找命令的所在位置:
cmd 命令行
中执行where nodemon
powershell命令行
执行get-command nodemon
安装包依赖
在项目协作中有一个常用的命令就是npm i,通过该命令可以依据package.json和
packagelock.json的依赖声明安装项目依赖
npm i
// 或者
npm install
安装指定版本的包
项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用下面的命令的
## 格式
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
函数也一样- 对于陌生的项目,我们可以通过查看
scripts
属性来参考项目的一些操作