前端的那些包管理工具

105 阅读2分钟

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 删除服务