文章目录
必备-15.npm
npm的作用?
- npm(node package manager):包管理器;
- 作用:实现项目中所有依赖模块的管理,包含:安装、卸载、更新等操作
- 默认安装源:http://www.npmjs.com,源在国外,安装较慢
- 切换安装源(淘宝镜像)
- nrm/cnpm
- yarn
- …
npm安装慢,我们想提速,如何操作?
- 1.切换安装源
nrm (cnpm)
$npm i nrm -g
$nrm ls 查看可用源
$nrm use xxx 使用某个源
- 后期还是基于npm操作即可!!
- 2.使用yarn【强烈推荐】
- 它比npm块,不仅仅是源的问题,而且基于yarn安装模块是并发的!!
npm i yarn
- 基于yarn一般都是往项目中安装模块,不推荐使用其往全局安
yarn add xxx
【安装指定版本或者放在开发依赖中与npm类似】yarn remove xxx
:移除yarn install
:跑环境【简写:yarn】
如何基于npm实现包的管理?
-
1、把需要的模块安装到全局:
- 好处:所有的项目都可以使用[一般使用它的是命令]
- 缺点:所有的项目只能使用一个版本,这样可能存在不同项目中版本冲突问题
- 安装最新版本:
$npm install(简写:i) xxx --global(简写:-g)
:安装的是稳定版本中的最新版- 例子:
npm i @vue/cli yarn nrm -g
- 特殊:mac电脑安装全局,需要在命令前加
sudo
- 例子:
- 卸载:
npm uninstall xxx -g
- 查看全局下载的路径:
$npm root -g
在appdata/Roaming/npm
目录下,存在xxx.cmd命令文件,所以我们以后可以使用xxx命令了。- 也可以把别人这个目录下安装好的东西,copy一份,到自己的目录下,这样不用安装,这些命令和模块也有了。
- 安装指定版本:
$npm view xxx versions
:查看某个模块所有的版本信息use$npm -v 或 --version
:查看自己安装的版本
-
2、把需要的模块安装在本地项目中:
-
缺点:只有当前项目才能用,不能直接使用命令{可以自己配置可执行的脚本命令}
-
优点:不会存在项目间的版本冲突
-
用法:
-
1、初始化package.json文件:
$npm init -y
,或者在vscode中按ctrl+撇
打开-
==注意:==项目目录的名字只能是:小写英文和数字、出现中文或者特殊符号,会导致npm init失败
-
作用:
-
1.在项目中安装的模块:我们把依赖的版本信息写到package.json对应的依赖清单中
- 作用:团队协作开发时,互发项目时不需要携带
node_modules
,只需要携带pacjage.json
即可,其他人就可以给项目“跑环境”:按照package.json
中的依赖清单,把所有没有安装的模块安装一下$ npm i
:(生产和开发)把产生和开发依赖都安装一遍$ npm i --production
:(只安装生产)只把生产依赖清单中的模块安装一遍
- 生产依赖(开发和部署服务器都需要):
$ npm i xxx --save(简写:-S/或者不写)
- 开发依赖(开发需要,部署不需要):
$ npm i xxx --save-dev(简写:-D)
- 作用:团队协作开发时,互发项目时不需要携带
-
2、安装在本地的模块:默认是无法使用命令的,但是我们可以在package.json中"script"属性配置可执行的脚本命令,让其可以基于命令的方式执行。
-
"script":{ //AAA 脚本名字 值是要执行的命令 "AAA":"lessc css/index.less css/index.min.css -x" } 执行:$ npm run AAA启动脚本命令
-
前提:安装在本地的模块,能使用命令的,必须在
node_modules/.bin
目录中有
-
-
-
-
一个模块发布的版本有几个阶段?
- alpha 内测版
- beta 公测版
- rc 预发版
- stable 稳定版(stable会被隐藏)
npm i xxx
:安装稳定版本中的最新版npm i xxx@latest
:安装稳定版本中的最新版npm i xxx@next
:安装最新版本npm i xxx@3
:安装第三代中的最后一个版本npm i xxx@3.12.0
:安装具体的某个版本
什么时候把模块安装到全局,什么时候安装到本地项目中?
-
全局:不涉及版本冲突,而且需要使用命令操作的模块可以安装到全局
-
@vue/cli yarn nrm create-react-app pm2
-
-
本地:每个项目都可以有自己的版本,防止版本冲突,但是不能使用命令