npm 命令相关
之前的项目都是基础模板搞好了让我上,最近由于项目原因得自己开了,管理包的一些命令长时间不用有点忘记,所以整体记录一下,下次忘了就直接看这个记录了。
npm包运行
这里主要记一下当前项目的包,所以全局的略过。
npm 的包分为全局和当前项目,全局放在 C:\Users\你的用户名\AppData\Roaming\npm\node_modules
,当前项目放在 node_modules
文件夹里。
我们要使用包,比如下载了gulp想查看其版本,你可以傻傻的用 "./node_modules/.bin/lodash -v",也可以创建一个package.json文件,通过这个文件去操作包。
$ pwd //进入当前文件
$ npm init -y // -y表示全部选择yes
$ ls //列出当前文件夹文件
$ cat package.json // cat打出文件具体内容
以上命令可以创建、查看 package.json
文件。
{
"name": "02-npm",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
},
"keywords": [],
"author": "",
"license": "ISC"
}
当我们安装了gulp包以后, 即:npm i gulp
,则会文件会出现以下内容。
"dependencies": {
"gulp": "^4.0.2"
},
此处会出现包的名字及版本号。
我们需要用到一个包时,可以在 scripts 这个键名下面创建 dev 命令:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "gulp -v"
}
其作用在于,当我们直接跑 npm run dev
时,node就会执行 gulp - v 显示 gulp 的版本。
其实也可以写成 ./node_modules/.bin/gulp -v
,但没必要,因为 package.json
这个文件会自动定位到当前目录的包。
此外,我们可以依据 package.json
这个文件去重新安装包。你可以试试将node_modules文件夹删除重新执行 npm i,有趣的事情发生了,新的node_modules文件夹里的包与之前的包是一样的。
npm 常用命令
这里以 下载 gulp 包为例。
下载(增)
普通安装
npm i gulp //简化写法
npm install gulp
npm install gulp --save
npm install gulp --global
在这里,使用命令 --save
或者说不写命令 --save
命令 ,node都会把信息记录到 dependencies
中。--global
则指下载到全局。
指定dependencies、devDependencies安装
npm install gulp --save-dev // 注意!是-dev
npm i gulp -D // --save-dev简化写法
如果使用命令 --save-dev
,node 会把信息记录到 devDependencies 中。
这里我们需要说一下dependencies和devDependencies:
- dependencies 中记录的是项目在运行时需要的文件,比如上线或测试的环境。
- devDependencies 中记录的是项目在开发过程中需要使用的一些文件,也就是常说的开发环境中会用到。在项目最终运行时是不需要的。
- 如果你的项目一个版本做完了,测试人员需要测试,那么他只需要你的 dependencies 中记录的包即可。
现在问题来了,假设测试人员要安装你的包,直接拿到你的据package.json
文件后去执行npm i,这时候,dependencies和devDependencies中均都会被安装。如果devDependencies中的东西很多,那势必会造成包很大。
请问怎么只安装dependencies而不安装devDependencies里的包呢?
npm i --production
执行以上命令即可,--production
,这个单词说明了一切。
指定版本安装
npm i gulp
安装 gulp最新版本。
npm i gulp@4
安装 gulp 版本4中最新的版本。
npm i gulp@4.0
安装 gulp 的4.0中最新版本。
npm i gulp@4.0.2
安装 gulp 的4.0.2版本。
注意,假如当前包的版本为2.2.2,当你指定下载版本2.2.1以后,该包会直接变成2.2.1。这个过程一般不需要将原来的包删除。(也有例外,组长,包里有坏人呐!)
查看包(查)
npm list // 简写为: ls
可以查看 node_modules 文件夹中的包, 包的依赖也会显示。
npm list | grep gulp
指定查看 gulp 包目录,不会将多余的依赖显示出来。
npm view gulp versions
查看 gulp 的所有历史版本。
更新包
npm i gulp@4.0.2
@
命令可以直接覆盖掉当前的包,去安装指定版本。
npm update
此命令需要提前了解一些规则:
"dependencies": {
"gulp": "^4.0.1"
}
我们可以看到"gulp": "^4.0.1"
中,有 ^
号。 其表示锁定主版本。 此时运行 npm update ,则gulp的更新规则为:gulp版本4中最新的版本。
除此以外,~
表示锁定主版本及次版本:"gulp": "~4.0.1"
,什么都不写则锁定具体版本。 *
, 表示直接更新最新版本。
当项目越来越大的时候,将这个规则和 npm update 配套使用,可以省很多功夫。
删除
npm uninstall gulp
删除gulp包。
npm cache clean --force
清除npm缓存。 某些包安装过程中报错安装失败,但是文件还残留着,这会导致你后面重新安装的时候可能报错,那么就可以使用这个命令可以清除掉缓存文件。