npm是node的模块管理器,功能及其强大,它是node获得成功的重要原因之一。

正因为有了nom,我们只要一行命令,就能安装别人写好的模块。

$ npm install

本文介绍npm模块安装机制的细节,以及如何解决安装速度慢的问题

一。从npm install说起

npm install 命令用来安装模块到node_modules目录;

$ npm install <packageName>

安装之前,npm install 会先检查,node_modules中是否已经存在指定模块,如果存在,就不重新安装了,即使远程仓库已经有了一个新版本,也是如此。

如果你希望,一个模块不管是否安装过,npm都要强制重新安装,可以用 -f 或 -force 参数

$ npm install <packageName> --force

二。npm update

如果想更新已安装模块,就要用到 npm update 命令

$ npm update <packageName>

它会先到远程仓库查询最新版本,然后查询本地版本,如果本地版本不存在,或者远程版本较新,就会安装。

三。registry

npm update 命令是怎么知道每个模块的最新版本呢?

答案是npm模块仓库提供了一个查询服务,叫做regisrty,以 npmjs.org 为例,它的查询服务网址是 https://registry.npmjs.org/ 。

这个网址后面跟上模块名,就会得到一个JSON对象,里面是该模块所有版本信息,比如,访问https://registry.npmjs.org/react,就会看到 react 模块所有版本的信息。

它跟下面命令的效果是一样的。

$ npm view react

# npm view 的别名
$ npm info react
$ npm show react
$ npm v react

registry 网址的模块名后面,还可以跟上版本号或标签,用来查询某个具体版本的信息,比如,访问 https://registry.npmjs.org/react/v0.14.6 ,就可以看到 react 的0.14.6版本

返回的JSON对象里面,有一个dist.tarball属性,是该版本压缩包的网址

dist: {
shasum: '2a57c2cf8747b483759ad8de0fa47fb0c5cf5c6a',
tarball: 'http://registry.npmjs.org/react/-/react-0.14.6.tgz'
},

到这个网址下载压缩包,在本地解压,就得到了模块的源码,npm installnpm update命令,都是通过这种方式安装模块的。

四,缓存目录

npm install 或 npm update 命令,从 registry 下载压缩包之后,都存放在本地的缓存目录

这个缓存目录,在Linux或Mac默认是用户主目录下的.npm目录,在 Windows 默认是%AppData%/npm-cache。通过配置命令,可以查看这个目录的具体位置。

$ npm config get cache
$HOME/.npm

npm模块安装机制简介的更多相关文章

  1. [转] npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  2. npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  3. 介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?

    1. npm 模块安装机制: 发出npm install命令 查询node_modules目录之中是否已经存在指定模块 若存在,不再重新安装 若不存在 npm 向 registry 查询模块压缩包的网 ...

  4. npm模块安装机制

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一.正因为有了npm,我们只要一行命令:npm install,就能安装别人写好的模块 . 一.从 npm ins ...

  5. 详解npm的模块安装机制 --社会我npm哥,好用话不多

      依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下 ...

  6. 【npm】详解npm的模块安装机制

      依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下 ...

  7. 详解npm的模块安装机制

    详解npm的模块安装机制 依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm ...

  8. 4.npm模块安装和使用(axios异步请求,lodash工具库)

    建立package.json npm init 下载包 npm install axios npm install lodash 下载包,并加到package里面 npm install axios ...

  9. 在Windows平台上安装Node.js及NPM模块管理

    1. 下载Node.js官方Windows版程序:http://nodejs.org/#download    从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...

随机推荐

  1. 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的极简美化指南

    目录 安装python 安装git 安装powerline字体 主题定制 安装oh-my-posh 查看策略组的执行权限 使用choco 安装终端模拟器 - ConEmu 优化 PowerShell ...

  2. uoj#386. 【UNR #3】鸽子固定器(乱搞)

    传送门 题解 //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i ...

  3. 剑指Offer的学习笔记(C#篇)-- 链表中倒数第K个点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 一 . 数据结构基础概念普及(线性表). 线性表可分为顺序表与链表,它们是堆栈.队列.树.图等数据结构的实现基础. 顺序表,线性表的顺序存储结构是 ...

  4. CC38:第k个数

    题目 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测试样例: 3 返回:7 解法 主要就是在于isPrime这个 ...

  5. C# 数据库连接字符串拼接

    string connectionString = string.Format(@"Data Source={0};User ID={1};Password={2};Initial Cata ...

  6. Codeforces Round #529 -C- Powers Of Two(二进制拆分)

    A positive integer xx is called a power of two if it can be represented as x=2yx=2y, where yy is a n ...

  7. CoreRT

    使用CoreRT将.NET Core发布为Native应用程序 在上一篇文章<使用.NET Core快速开发一个较正规的命令行应用程序>中我们看到了使用自包含方式发布的.NET Core应 ...

  8. 这个匿名对象没有实现IComparable接口

    https://www.cnblogs.com/felixnet/p/5193086.html https://docs.microsoft.com/zh-cn/dotnet/api/system.i ...

  9. Spark Mllib里如何建立密集向量和稀疏向量(图文详解)

    不多说,直接上干货! 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计

  10. Java微信公众平台开发(十一)--微信JSSDK中Config配置

    JSSDK曾经引爆前端以及后端的工程师,其魔性的力量毋庸置疑,在我们的技术眼里它的实现原理和根本是不能够被改变的,这篇文章就不对其js的实现做任何评价和解说了(因为我也不是很懂,哈哈),这里要说的是它 ...