npm
NPM 是什么?
- node package manager
- npm(全称Node Package Manager,即node包管理器)是Node.js默认的、以JavaScript编写的软件包管理系统。
- npm 官方网站
- npm 官方文档
一般当我们说npm的时候可能指3件事
- NPM 网站:https://www.npmjs.com/
- NPM 包管理库,存储了大量的JavaScript代码库
- NPM 客户端,我们所使用的npm命令行工具。使用JavaScript开发的基于node.js的命令行工具,本身也是Node的一个包。
可以通过在命令行中输入:
npm --version
升级 npm(自己升级自己):
npm install --global npm
npm常用命令
- npm init
- npm init -y —>快速生成,可以跳过向导
- npm install
- 一次性把 dependencies 选项中的依赖项全部安装
- 简写 npm i
- npm install 包名 ---->只下载
- npm install --save 包名
- 下载并且保存依赖项(package.json文件中的dependencies选项)
- 简写 npm i -S 包名
- npm uninstall 包名
- 只删除,如果有依赖项 会依然保存
- npm uninstall --save 包名
- 删除的时候也会把依赖信息也去除
- npm un -S 包名
- npm help ---->查看使用帮助
- npm 命令 --help
- 查看指定命令的使用帮助
- 例如忘记uninstall 命令的缩写了,这个时候,可以输入npm uninstall --help来查看使用帮助
解决npm被墙的问题
npm 储存包文件服务器在国外,有时候会被墙,速度很慢
https://npm.taobao.org/淘宝开发团队做的备份
安装淘宝的cnpm
#在任意目录执行都可以
# --global 表示安装到全局,而非当前目录
# --global 不能省略,否则不管用
npm install --global cnpm
接下来安装包的时候,均将npm替换成 cnpm
举个例子
#这里还是走国外的 npm 服务器 ,速度比较慢
npm install jquery
#使用 cnpm 就会通过淘宝的服务器来下载jQuery
cnpm instll jquery
如果不想安装 cnpm 又想使用淘宝的服务器来下载:
npm install jquery --registry=https://registry.npm.taobao.org
加参数较麻烦,可直接将选项加入配置文件中
npm config set registry https://registry npm.taobao.org
#查看npm配置信息
npm config list
只要经过上面配置,以后所有的npm install 都会默认通过淘宝的服务器下载。
package.json
建议每个项目都要有一个package.json文件(包描述文件,就像产品的说明书一样),给人踏实的感觉
这个文件可以通过npm init的方式初始化出来
C:\Users\ZOE XU\Desktop\npm-demo>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (npm-demo)
version: (1.0.0)
description: this is a test project
entry point: (index.js) main.js
test command:
git repository:
keywords:
author: zoe xu
license: (ISC)
About to write to C:\Users\ZOE XU\Desktop\npm-demo\package.json:
{
"name": "npm-demo",
"version": "1.0.0",
"description": "this is a test project",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "zoe xu",
"license": "ISC"
}
Is this OK? (yes) yes
C:\Users\ZOE XU\Desktop\npm-demo>npm install --save jquery
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN npm-demo@1.0.0 No repository field.
- jquery@3.4.1
added 1 package from 1 contributor in 13.034s
C:\Users\ZOE XU\Desktop\npm-demo>
对于咱们目前来讲,最有用的是那个dependencies选项,可以用来帮我们保存第三方包的依赖信息
如果你的node_modules删除了也不用担心,我们只需要:npm install就会自动把package.json中的dependencies中所有的依赖都下载回来
- 建议每个项目的根目录下都有一个package.json文件
- 建议执行npm install包名的时候都加上–save这个选项,目的是保存依赖项信息
package.json 与package-lock.json
- npm5 以前是不会有package-lock.json这个文件, npm 5以后才加入了 这个文件
- 当安装包的时候都会自动创建或者更新package-lock.json这个文件
- package-lock.json这个文件会保存 node_modules 中所有包的信息(版本,下载地址)
- 这样的话重新 npm install的时候速度会提升
- 从文件来看,有个 lock 称之为锁
- 这个lock 是用来锁定版本的
- 如果这个项目依赖了 1.1.1 版本 ,重新 install 会下载最新版本 (无lock时)
- 所以package-lock.json 这个文件的另一个作用就是 锁定版本升级号 ,防止自动升级更新