npm 和 yarn 前端包管理工具
前言
前端开发逐渐工程化,npm作为我们的依赖管理工具起到十分重要的作用,本文就来总结一下 npm 和 yarn 相关知识点。
正文
1、什么是npm
(1)node的包管理器(node package manager),是node.js 默认的、以js编写的软件包管理器。
(2)npm相当于一个云代码仓库,相当于我们在开发中复制别人的代码,npm是收集了这么多代码,管理起来。
(3)各个包之间的相互依赖npm帮我们管理,不需要我们单独去管理。
(4)开发中我们想用jquery的包、bootstrap的包,没有npm之前我们需要单独去下载,引入,有了npm之后,我们只需要npm的一条指令,并且可以控制我们需要的对应的版本。
2、npm的安装
npm是node的默认的软件包管理系统,安装node完毕之后,会默认安装npm。
npm 本身也是基于node.js 开发的软件。
下载node:网站(https://nodejs.org/zh-cn/),检测是否安装成功,需要在cmd命令框中输入命令。
查看node是否安装成功 node -v
查看npm是否安装成功 npm -v
全局下载依赖包jquery npm install jquery -g
查看当前npm下载包来至于服务器 npm config get registry
由于国外服务访问慢,可以设置淘宝镜像提升下载依赖的速度,之后就可以使用cnpm(gzip压缩支持):
npm install -g cnpm --registry=https://registry.npm.taobao.org
使用nrm工具切换淘宝源 npx nrm use taobao
使用nrm工具切换官方源 npx nrm use npm
3、npm的基本使用
查看当前项目中所装的依赖 npm list
查看某一个依赖的版本 npm list vue // 查看vue的依赖版本
安装指定版本的依赖 npm install juery@3.0.0 // 安装3.0.0本版的依赖到当前项目
更行指定依赖到最新版本 npm update jquery // 更新jquery到最新版本,旧项目慎用
更行npm的版本 npm install npm@6.14.5 // 更新npm到指定版本
-g // 代表全局安装
-S // 或者--save 会在package.json文件的dependencies节点中写入依赖,表示运行时依赖
-S -D //或者--save --dev 会在package.json文件的devDependencies 节点中写入依赖,表示开发时依赖
// vue、vue-router 这些包在发布后生产环境还需要用,为运行时依赖,gulp,压缩css/js模块,babel的包在在项目部署后不使用,为开发时依赖。 清空缓存 npm cache clear // 清空npm本地缓存,用于对付使用相同版本号发布新版本代码的人
撤销依赖版本 npm unpublish<package>@<version> // 可以撤销发布自己发布的某个依赖版本
其他命令请到npm官网(https://www.npmjs.com/)查看使用
4、package.json详解
进入文件夹,cmd命令输入" npm init "初始化生成package.json文件。

之后就会生成package.json文件,里面的内容就是上一步录入的信息。

执行npm install jquery -s 命令就会装入一个jquery的运行时依赖

同时package.json中dependencies节点就会写入改依赖名

上面的图片中,jquery对应的版本前面有 "^" 符号表示后两位会更新到最新版本,如果替换为 “~”破浪线表示最后一位更新到最新版本,若没有符号,表示依赖只能是指定的版本。
此时,如果删除掉node_modules文件夹下的jquery文件,将删除了依赖,此时package.json的dependencies节点不变,此时重新执行npm install 命令,将会重新下载安装jquery文件到node_modules文件夹下,这就是为什么我们在拿到一个半成品项目的时候,需要首先执行npm install 命令,别人的代码中不会有这些依赖,只是将依赖信息放在了package.json文件中,我们执行npm install 的时候,npm包管理工具会去查找该文件安装对应的依赖到本地环境。
5、npm安装包的使用
有了前面的了解,我们可以使用命令行使用npm下载和更新包,但是没有webpack 之前搜寻整个node_modules目录来定位每个包的路径再手动添加到我们的html代码中十分不便,相当于把依赖当成一个资源的目录了,类似于cdn脚本引入,这样十分不方便,因此产生了webpack。这里需要了解模块和包的概念(commonJS、require、import)。
6、yarn
“Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。”这句话让我想起了使用npm时的坑了:
npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。同一个项目,安装的时候无法保持一致性。
队列执行每一个安装包。
安装yarn npm install -g yarn
yarn 淘宝源安装(两条命令) yarn config set registry https://registry.npm.taobao.org -g
yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g
初始化项目 yarn init
添加一个依赖包 yarn add [package]@[version]
更新一个依赖包 yarn upgrade [package]@[version]
删除一个依赖包 yarn remove [package]
安装所有的依赖包 yarn install
列出每个缓存的包 yarn cache ls
清除本地缓存 yarn cache clean
优点:速度快、安装版本统一、加入多个注册来源以及更多的语义化。
写在最后
以上就是本文的全部内容,希望给读者带来些许的帮助和进步,方便的话点个关注,小白的成长之路会持续更新一些工作中常见的问题和技术点。

npm 和 yarn 前端包管理工具的更多相关文章
- 前端包管理工具 yarn
yarn 是一个 与 npm 类似的 前端包管理工具 安装 windows 要去官网下载 (一定要去官网下载 .mis 文件进行安装) 用npm 或者 cnpm 也能安装 但是这种安装 有缺 ...
- 主流包管理工具npm、yarn、cnpm、pnpm之间的区别与联系——原理篇
接触 node 之后,一直使用npm包管理工具, cnpm 一开始会用一些,但是并没有觉得比 npm 快得多,使用 cnpm 的时候还经常安装不成功,只能再用 npm 安装一遍,渐渐的就弃用了 cnp ...
- node的包管理工具:yarn和npm
arn是Facebook发布的一款依赖管理工具,它比npm更快.更高效. NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 一.yarn官方网站: 英文官网:ht ...
- 包管理工具(npm、yarn)
npm包管理工具 1. npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已. 2. 这两种安装方式的区别: 本地安装(安装在命令行运行所在 ...
- 【前端】NodeJs包管理工具NPM
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS部署上的很多问题. 测试是否安装成功,出现版本提示表示安装成功. npm -v NPM常用命令 官方文档:https://www.npm ...
- NodeJS包管理工具——npm入门
如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,Java的Maven……当然还有Node.js的npm.有的人会奇怪为何要引入又一个新东西来让我 ...
- 包管理工具-yarn
今天知道了一个新的包管理工具叫yarn,总结如下: 如果你知道npm的使用过程,那么yarn你就觉着相见恨晚呐...... npm存在的问题: >安装的时候无法保证速度的一致性 >安全问题 ...
- 前端工程化系列[01]-Bower包管理工具的使用
本文主要介绍前端开发中常用的包管理工具Bower,具体包括Bower的基本情况.安装.使用和常见命令等内容,最后还介绍了依赖树管理的常见方式以及Bower采用的策略并进行了比较. 1.1 关于Bowe ...
- NPM 与前端包管理
我们很清楚,前端资源及其依赖管理一直是 npm 的重度使用场景,同时这也一直是 Node.js 普及的重要推动力.但这类应用场景到底有多重度?这是一个很难回答的问题.这份 “npm 最常下载的包的清单 ...
随机推荐
- FastJsonHttpMessageConverter请求中参数序列化问题排查
问题 前几天帮忙其他部门的多个祖先级项目改造开发,服务间使用Feign方式调用,发现接口提供方接收到的请求,没有请求参数,经过排查发现服务调用方的FastJsonHttpMessageConverte ...
- springboot 配置devtools热部署(不用重启服务可以刷新页面)
一.加入devtools依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...
- JAVA比较指定的两个日期
判断指定日期是否在某个日期内 public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); p ...
- ubuntu下AF_INET和AF_INET6的值
关于 演示环境 $ uname -a Linux xxxxxxx 5.4.0-47-generic #51-Ubuntu SMP Fri Sep 4 19:50:52 UTC 2020 x86_64 ...
- 1105 第K大的数
1105 第K大的数 基准时间限制:1 秒 空间限制:131072 KB 数组A和数组B,里面都有n个整数.数组C共有n^2个整数,分别是A[0] * B[0],A[0] * B[1] ...... ...
- iNeuOS工业互联网操作系统,矿山动态产量计量系统和铁路车辆识别系统应用场景案例
目 录 1. 概述... 2 2. 平台演示... 2 3. 矿山动态产量计量系统... 2 4. 铁路车辆识别系统... 4 1. 概述 iN ...
- 版本不兼容Jar包冲突该如何是好?
一.引言 "老婆"和"妈妈"同时掉进水里,先救谁? 常言道:编码五分钟,解冲突两小时.作为Java开发来说,第一眼见到ClassNotFoundExceptio ...
- Java 泛型通配符 T,E,K,V,?
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据类型被 ...
- Ranger-Usersync安装
Ranger-Usersync安装, 配置数据源Unix,Usersync从Unix拉取Users/Groups的数据源, 对应的Ranger版本0.6.0. IP/机器名 安装软件 运行进程 zdh ...
- Eclipse导入Elasticsearch源码
Eclipse导入Elasticsearch源码的步骤, 基于Elasticsearch 6.2.2的源码版本. 1.安装JDK1.9 Elasticsearch 6.2.2需要JDK1.9编译,否则 ...
