学习npm基本用法
- 2018-8-24
- Web
这几年Web生态圈越来越繁荣,各种各样的框架和类库更是层出不穷,Web项目的工程复杂度也达到了前所未有的高度。因此出现了包管理工具npm、Web构建工具webpack等一系列优秀的工具。 自己一直以来都是对 npm 的了解处在使用 npm 安装 npm 包的阶段,从未对 npm 有一个系统的了解。学习使用一个工具的方法是看官网的 doc。因此,下面的内容全都是在 npm documentation 的个人理解,如与官方文档有些出入,请以官方文档为主。
npm是什么
npm 是世界上最大的软件注册表,包括超过 60 万个 npm 包。npm 由三个部分组成:网站、命令行工具(CLI)和注册表。
npm的功能
- 将包中的代码整合进你的应用中
- 下载使用独立的工具
- 用
npx
命令直接运行包 - 和其他 npm 用户分享代码
- 限制代码只能被特定的开发者使用
- 建立 Orgs (组织)去协调包的维护、代码以及开发者
- 使用 Orgs 建立虚拟团队
- 管理多个版本的代码以及代码的依赖
- 当底层代码更新时能够轻松地更新应用
- 发现解决同一难题的多种方法
- 找到其他正在处理类似问题和项目的开发者
从哪开始
创建一个 npm 账户
注册一个 npm 账户 并修改个人头像以及相关信息 ### 安装 npm Linux 用户建议使用 node版本管理器 nvm 安装 nodejs 与 npm 1
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
重启终端后输入以下命令 1
2nvm install stable #安装nodejs稳定版本
nvm ls #查看当前安装的nodejs版本
分享你的 npm 包或与他人合作
创建一个 npm Orgs
我错了,官方文档废话太多,后来在百度上看到这篇教程写的条理比较清楚 npm使用入门
package.json
package.json 记录了项目中用了哪些包以及具体包的版本信息。 ## 创建package.json 1
npm init #初始化一个package.json文件
package的主要字段含义如下: 1. name 模块名,模块名要求如下 - 全部小写 - 中间不能有空格 - 允许使用短横线和下划线作为单词分隔符 2. version 模块版本信息 3. description 模块描述 - 如果为空则读取 README.md 的第一行作为默认值 4. main 模块被引入后首先加载的文件 5. scripts 定义一些常用命令入口 6. dependencies 生产环境需要的依赖包 7. devDependencies 开发环境需要的依赖包 ## 配置package.json初始化信息 1
2
3npm set init.author.email "1404363070@qq.com"
npm set init.author.name "lolimay"
npm set init.license "MIT"
安装模块
npm install
使用 npm install
会读取 package.json
文件来安装依赖 ## npm install 1
2npm install <package-name> --save
npm install <package-name> --save-dev
更新模块
1 | npm update |
卸载模块
1 | npm uninstall <package-name> |
同理,如果也将这个包的信息从 package.jsoon 文件中移除,需要添加 --save
参数 # 全局包管理 安装、卸载和更新的用法同本地包管理,唯一不同的是需要加上 -g
参数来表明这是一个全局操作 ## 查看哪些包需要更新 1
npm outdated -g --depth=0 #查看哪些包需要更新
package-lock.json
npm5 之后安装文件之后会多出个 package-lock.json 的文件 它的作用是 1. 安装之后锁定包的版本,手动修改 package.json 文件包的版本信息将不会更新包,想要更新只能使用 npm install xxx@x.x.x --save
这种方式更新 package-lock.json 文件才行 2. 加快了 npm install 的速度,因为 package-lock.json 文件中已经记录了整个 node_modules 目录的树状结构,甚至连模块的下载地址都记录了,再重新安装的时候只需要直接下载文件即可
它的意义在于锁定包的版本,能够避免因为包版本不同而产生的问题。
配置 npm 源
1 | npm config set registery https://registery.npm.taobao.org #设置npm源为淘宝镜像源 |