文章目录
一.npm
1.定义
npm全程是NodeJS Package Manager,即Nodejs包管理器,它是和Node一起安装的
2.用途
- 从npm服务器下载上面的包或者命令行程序到本地
- 把自己写好的包或命令行上传到npm服务器供别人使用
3.安装
npm无需特意安装,会在安装node时一起安装好
更新
- 升级到最新版:
sudo npm install npm@lastest -g
- 在Windows下升级版本:
npm install npm -g
- 查看当前版本:
npm -v
如何使用npm命令安装依赖模块?
- 下载命令
npm install <Module Name>
- 安装完毕后可以在项目node-modules目录中看到
- 在入口文件mian.js中引入:
var modulename=require("Module Name")
4.全局安装和本地安装
npm的包安装可以分为全局安装(global)和本地安装(local)
(安装命令带 -g就是全局安装,不带就是本地安装)
本地安装
本地安装会将安装包放在node_modules目录下,然后通过require()来引入本地安装的包
全局安装
全局安装会将安装包放到电脑上,一般会放在usr/local或者node的安装目录下,
通过全局安装的包可以直接在命令行使用
5.卸载,搜索和更新模块
以express为例
- 卸载:
npm uninstall express
- 更新:
update express
- 搜索:
npm search express
6.创建和发布模块
- 创建模块:
npm init
- 注册用户:
npm adduser
,输入用户名,密码,邮箱 - 发布模块:
npm publish
7.package.json文件介绍
package.json用于定义包的属性,位置在模块的目录下
文件常用属性:
name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js
keywords - 关键字
8.package.json与 package-lock.json 的区别
当项目中已有 package-lock.json 文件,在安装项目依赖时,将以该文件为主进行解析安装指定版本依赖包,而不是使用 package.json 来解析和安装模块。
因为 package 只是指定的版本不够具体,而package-lock 为每个模块及其每个依赖项指定了版本,位置和完整性哈希,所以它每次创建的安装都是相同的。
无论你使用什么设备,或者将来安装它都无关紧要,每次都应该给你相同的结果。
当项目中已经存在package-lock.json文件的情况下,
在安装项目依赖时,将以该文件为主进行解析安装指定版本安装包,
而不是使用package.json来解析和安装模块
由于package.json中指定的版本不够具体,
因此在package-lock.json中,为每一个模块和每一个依赖项都指定一个版本,位置和完整的哈希
这样做的好处是:它每次创建的安装版本都是相同的,可以使项目在不同的设备上跑通
二.cnpm
1.介绍
npm软件包管理器部署在国外服务器,因此可能不太稳定,安装依赖包容易报错,
基于此,淘宝团队开发了cnpm
2.命令
- 安装模块:
cnpm install [name]
- 同步模块:
cnpm sync express
- 其他命令:
cnpm info express
三.yarn
1.介绍
yarn是由Facebook、Google、Exponent 和 Tilde 联合推出的JS包管理工具,
是为了弥补npm的一些缺点而出现の
2.命令
- 安装yarn:
npm install -g yarn
- 查看版本:
yarn --version
- 其他命令:
git clone
yarn install
yarn run serve
yarn run dev
四.对比
1.npm的缺点
- 速度慢:npm 按照队列执行安装每个 package,只有当前 package 安装完成之后,才会进行后面的安装。
- 同一个项目,npm 安装的时候无法保持一致性,由于 package.json 文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义:
“5.0.3”, //安装指定的5.0.3版本
“~5.0.3”, //安装5.0.X中的最新版本
“^5.0.3” //安装5.X.X中的最新版本
- npm 安装的时候,一个包抛出错误,npm 会继续下载安装包,而且因为 npm 会把所有的日志输出到终端,有关错误包的错误信息就会淹没在 npm 打印的警告中,你甚至不会发现错误的产生。
2.yarn 的优点
- 速度快:yarn 执行 package 的安装时,会同步执行所有任务,提高了性能;如果已经安装过某一个包,yarn 再次安装此包时无需互联网,直接安装本地缓存的依赖项。
- 安装版本统一。
- 更简洁的输出,默认情况下,只打印必要的输出信息。
- 更好的语义化:如 yarn add/remove