npm的操作处理
npm(node package manager):node的模块管理器 安装node后,会自带npm nodejs.org/zh-cn/ + 下载长期维护版本 + 基于nvm可以安装多个node版本
@1基于npm安装模块之前,一般都会先执行
$ npm init -y 目的是创建一个package.json文件
- 记录安装模块的清单[生产依赖项、生产依赖项]
- 设置可执行的脚本命令
- 设置一些相关的配置 备注:所在文件的目录的名字不能出现“中文、大写字母、特殊符号等”,需要符合npm包的规范,一般就是小写字母加数字 @2 再基于npm去安装所需要的模块 $ npm install(简写:i) 模块名 在指定目录下安装需要的模块
例如:
$ npm i jquery 安装jquery的最新版本,而且是生产依赖项
$ npm i xxx --save(-S) 安装在生产依赖清单中[后面的--save不写也是]
$ npm i xxx --save-dev(简写:-D) 安装在开发依赖清单中
$ npm xxx@3 安装第三代中的最后一个版本
$ npm i xxx@3.2.1 安装指定版本
$ npm i xxx@latest 安装最新稳定版本
$ npm xxx@next 安装最新版本
$ npm uninstall(简写:uni) xxx 卸载指定模块
@3 在团队协作开发的时候,不论是基于git还是何种方式,实现文件传输的同时,存储在node_modules文件不传输, 这样就导致,别人获取代码后,他的本地并没有所需要的模块,此时她需要把需要的模块重新安装一遍才可以!!! 按照package.json中记录的清单,去安装所需的模块 ==> "跑环境"
$ npm i 把开发依赖/生产依赖都安装一遍
$ npm i --production 只把生产依赖安装一遍
----------
查看模块有哪些版本:$ npm view xxx versions
所有安装的模块 都会在package.json中记录对应的清单 模块都放在node_modules文件夹里面
上述操作都是把模块安装在当前项目目录中,也就是安装的模块只对本项目有用!!但是有时候我们需要在全局下安装一些模块 让其所有的项目都生效,或者使用一些命令进行相关的操作 向全局安装模块
$ npm i xxx --global(简写:-g)
mac电脑
$ sudo npm i xxx -g 然后输入电脑的开机密码[密文输入]
全局模块的特点
- 可以使用相关的命令 查看全局安装的目录:$ npm root -g 之所以可以使用命令,是因为出现了xxx.cmd的命令文件,而node_mouduleds中存储着安装的模块
- 针对的是本地的项目
- 可能会存在版本冲突的问题,例如 A项目需要第一代版本。B项目需要第二代版本,但是全局只能安装一个版本
- 可以基于命令去操作,但是无法把模块导入代码进行开发
大部分模块都安装在本地项目中了
- 只对当前项目起做用,所以不需要考虑版本冲突问题
- 不能直接使用命令操作「但是可以自己去配置可执行的脚本命令」
前提:需要用的命令在 node_modules/.bin 存在,虽然不能直接使用相关的命令,但是自己可以在package.json中配置
"scripts": {
"AAA": "lessc index.less index.min.css -x"
}
$ npm run AAA
- 可以导入到代码中使用
- ...
基于npm安装模块 都是从 npmjs.com 中查找安装的!!
- 网站在国外,所以平时基于npm安装会慢一些,我们需要想办法让安装变得更快!!
解决方案一:基于nrm进行安装源的切换,后续的操作还是基于npm完成
$npm i nrm -g
$nrm --version 查看是否安装成功
$nrm ls 查看有哪些安装源
$nrm use taobao 使用淘宝镜像源进行安装
解决方法:基于yarn进行模块的管理[一般用于本地项目模块管理,全局模块的管理还是npm]
- 安装源要比“npmjs.com” 要快
- 安装事"并发"安装
- ...
$ npm i yarn -g
$ yarn --version
-------
$ yarn
创建package.json [初始化项目]
$ yarn add xxx@1.x.x -D/-S 添加模块
$ yarn remove xxx 移除模块
$ yarn AAA 执行脚本命令
pm2模块的运用
$ npm i pm2 -g
$ pm2 --version
------
$ pm2 start server.js --name CRM(自己设置的名字) 启动服务
$ pm2 list 查看启动了那些服务
$ pm2 restart CRM 重启服务
$ pm2 stop CRM 停止服务
$ pm2 delete zhihu CRM 删除服务