前言

  前端开发逐渐工程化,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 前端包管理工具的更多相关文章

  1. 前端包管理工具 yarn

    yarn 是一个  与 npm 类似的 前端包管理工具 安装 windows  要去官网下载 (一定要去官网下载 .mis 文件进行安装)   用npm 或者 cnpm  也能安装 但是这种安装 有缺 ...

  2. 主流包管理工具npm、yarn、cnpm、pnpm之间的区别与联系——原理篇

    接触 node 之后,一直使用npm包管理工具, cnpm 一开始会用一些,但是并没有觉得比 npm 快得多,使用 cnpm 的时候还经常安装不成功,只能再用 npm 安装一遍,渐渐的就弃用了 cnp ...

  3. node的包管理工具:yarn和npm

    arn是Facebook发布的一款依赖管理工具,它比npm更快.更高效. NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 一.yarn官方网站: 英文官网:ht ...

  4. 包管理工具(npm、yarn)

    npm包管理工具 1. npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已. 2. 这两种安装方式的区别: 本地安装(安装在命令行运行所在 ...

  5. 【前端】NodeJs包管理工具NPM

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS部署上的很多问题. 测试是否安装成功,出现版本提示表示安装成功. npm -v NPM常用命令 官方文档:https://www.npm ...

  6. NodeJS包管理工具——npm入门

    如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,Java的Maven……当然还有Node.js的npm.有的人会奇怪为何要引入又一个新东西来让我 ...

  7. 包管理工具-yarn

    今天知道了一个新的包管理工具叫yarn,总结如下: 如果你知道npm的使用过程,那么yarn你就觉着相见恨晚呐...... npm存在的问题: >安装的时候无法保证速度的一致性 >安全问题 ...

  8. 前端工程化系列[01]-Bower包管理工具的使用

    本文主要介绍前端开发中常用的包管理工具Bower,具体包括Bower的基本情况.安装.使用和常见命令等内容,最后还介绍了依赖树管理的常见方式以及Bower采用的策略并进行了比较. 1.1 关于Bowe ...

  9. NPM 与前端包管理

    我们很清楚,前端资源及其依赖管理一直是 npm 的重度使用场景,同时这也一直是 Node.js 普及的重要推动力.但这类应用场景到底有多重度?这是一个很难回答的问题.这份 “npm 最常下载的包的清单 ...

随机推荐

  1. CentOS系统 python3+python2 & Ipython安装

    https://www.cnblogs.com/albertrui/p/8093384.html 一.安装依赖环境 输入命令: yum -y install zlib-devel bzip2-deve ...

  2. libevent源码学习(11):超时管理之min_heap

    目录min_heap的定义向min_heap中添加eventmin_heap中event的激活以下源码均基于libevent-2.0.21-stable.       在前文中,分析了小顶堆min_h ...

  3. pl/sql属性类型

    pl/sql 属性类型 %TYPE - 引用变量和数据库列的数据类型 %ROWTYPE - 提供表示表中一行的记录类型 显示输出scott.emp表中的部分数据 declare emp_number ...

  4. windows下php安装redis扩展

    查看当前PHP版本 代码中添加 phpinfo(); 下载对应的redis扩展 下载链接:https://pecl.php.net/package/redis 因为我的PHP版本是5.6的,所以red ...

  5. 【LeetCode】370. Range Addition 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 只修改区间起终点 日期 题目地址:https://le ...

  6. Bean拷贝工具

    Apache BeanUtils Spring BeanUtils cglib BeanCopier Hutool BeanUtil Mapstruct Dozer 1.Apache  BeanUti ...

  7. A ROBUST KERNEL PCA ALGORITHM

    目录 引 主要内容 问题一 问题二 Lu C, Zhang T, Du X, et al. A robust kernel PCA algorithm[C]. international confer ...

  8. 八、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天输入框扩展面板的实现

    聊天输入框扩展面板的实现 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入 ...

  9. PHP 的扩展类型及安装方式

    扩展类型 底层扩展(基于C语言): PECL 上层扩展(基于PHP 语言): PEAR Composer PECL # 查找扩展 $ pecl search extname # 安装扩展 $ pecl ...

  10. unittest+ddt_实现数据驱动测试(7)

    我们设计测试用例时,会出现测试步骤一样,只是其中的测试数据有变化的情况,比如测试登录时的账号密码.这个时候,如果我们依然使用一条case一个方法的话,会出现大量的代码冗余,而且效率也会大大降低.此时, ...