学习npm基本用法

学习npm基本用法

这几年Web生态圈越来越繁荣,各种各样的框架和类库更是层出不穷,Web项目的工程复杂度也达到了前所未有的高度。因此出现了包管理工具npm、Web构建工具webpack等一系列优秀的工具。 自己一直以来都是对 npm 的了解处在使用 npm 安装 npm 包的阶段,从未对 npm 有一个系统的了解。学习使用一个工具的方法是看官网的 doc。因此,下面的内容全都是在 npm documentation 的个人理解,如与官方文档有些出入,请以官方文档为主。

npm是什么

npm 是世界上最大的软件注册表,包括超过 60 万个 npm 包。npm 由三个部分组成:网站、命令行工具(CLI)和注册表。

npm的功能

  1. 将包中的代码整合进你的应用中
  2. 下载使用独立的工具
  3. npx 命令直接运行包
  4. 和其他 npm 用户分享代码
  5. 限制代码只能被特定的开发者使用
  6. 建立 Orgs (组织)去协调包的维护、代码以及开发者
  7. 使用 Orgs 建立虚拟团队
  8. 管理多个版本的代码以及代码的依赖
  9. 当底层代码更新时能够轻松地更新应用
  10. 发现解决同一难题的多种方法
  11. 找到其他正在处理类似问题和项目的开发者

从哪开始

创建一个 npm 账户

注册一个 npm 账户 并修改个人头像以及相关信息 ### 安装 npm Linux 用户建议使用 node版本管理器 nvm 安装 nodejs 与 npm

1
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash

重启终端后输入以下命令

1
2
nvm 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
3
npm 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 安装一个 npm 包 ## --save 与 --save-dev 参数 使用 --save 与 --save-dev 参数会将新安装的模块信息记录到 package.json 文件中,否则仅安装该 npm 包而不会记录到 package.json 文件中,如

1
2
npm 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
2
npm config set registery https://registery.npm.taobao.org #设置npm源为淘宝镜像源
npm config get registery #查看当前的 npm 源