首页
学习
活动
专区
圈层
工具
发布

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

下面我就来解释一番 【注意】:下面的图示全部为依赖树的物理结构,而不是逻辑结构 关于npm模块安装机制的一点猜想 安装模块时,可能的方式有两种:平级式的安装或嵌套式的安装(此处仅仅是猜想和假设) 能不能完全采取平级的安装方式呢...但如果我们仅仅只安装一个版本的C依赖模块,将可能会导致A模块和B模块不兼容 基于以上原因,npm2选择了嵌套的安装方式—— npm2下的模块安装机制 npm2安装多级的依赖模块采用嵌套的安装方式: 优点和弊端...于是npm3做了一下改进 npm3下的模块安装机制: npm3和npm2的不同主要体现在二级模块的安装上: npm3会"尽量"把逻辑上某个层级的模块在物理结构上"全部"放在项目的第一层级里,具体我概括为以下三种情况...install的时候,项目下安装依赖的 npm3中的二级模块(C v1.0),在项目的一级目录(node_modules)下没有相同名称的模块时,会被安装到一级目录下,从而跟它的父模块A同级。...,造成模块冗余 在npm3中,因为A模块下的C模块被安装到了第一级,这使得B模块能够复用处在同一级下;且名称,版本,均相同的C模块 npm3就是用这种方式,部分地解决了npm2的痛点(部分) 【从1,2

2.7K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    npm 机制 npm install npm install 之前,会检查当前目录的node_modules目录之中是否已经存在指定模块。...如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本。...若不存在 npm 向 registry 查询模块压缩包的网址 下载压缩包,存放在根目录下的.npm目录里 解压压缩包到当前项目的node_modules目录 为啥自动安装 输入 npm install...工程本身是整棵依赖树的根节点,每个首层依赖模块都是根节点下面的一棵子树,npm 会开启多进程从每个首层依赖模块开始逐步寻找更深层级的节点。...5.安装模块 这一步将会更新工程中的 node_modules,并执行模块中的生命周期函数(按照 preinstall、install、postinstall 的顺序)。

    1.1K10

    如何发布自己的NPM包(模块)?

    1.注册NPM 账号 --- 注册地址:https://www.npmjs.com/。 2.初始化自己要发布的项目 --- 搭建本地环境:安装node.js,包含了npm命令。...新建目录,在该目录下,初始化项目:npm init。 按照提示填写初始化信息,我的模块名称为:finitxu-npm-test,初始版本号:v1.0.0。...模块名称需遵循相关政策要求:https://www.npmjs.com/policies,不能够与已有NPM模块名冲突等等。...4.使用自己发布的包(模块)的示例代码 ----------- 安装之前发布的npm包: npm install finitxu-npm-test 新建其它目录,初始化:npm init。...输出: { name: 'finit', f1: [Function: f] } 11 undefined finit 5.更新自己的NPM包(模块)及readme.md ---------------

    4.2K80

    npm模块管理器

    另一层含义是Node.js默认的模块管理器,是一个命令行下的软件,用来安装和管理node模块。 npm不需要单独安装。在安装node的时候,会连带一起安装npm。...$ npm list # 列出全局安装的所有模块 $ npm -global list # npm list命令也可以列出单个模块。...$ npm list underscore npm install 模块可以“全局安装”,也可以“本地安装” “全局安装”指的是将一个模块直接下载到Node的安装目录中,各个项目都可以调用; “本地安装...”指的是将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块; # “本地安装”某个模块 $ npm install npm install默认会安装dependencies字段和devDependencies字段中的所有模块,如果使用production参数,可以只安装dependencies字段的模块。

    1.8K31

    React 安装(NPM)

    在开始之前,确保你已经安装了 Node.js 和 npm,你可以通过以下命令检查它们是否已经安装: node -v npm -v 如果你的系统还不支持 Node.js 及 NPM 可以参考我们的 Node.js...国内使用 npm 速度很慢,你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm: $ npm install -g cnpm --registry=https://registry.npmmirror.com...$ npm config set registry https://registry.npmmirror.com 这样就可以使用 cnpm 命令来安装模块了: $ cnpm install [name...这个目录由 npm 或 yarn 自动生成,包含了项目运行所需的所有第三方库和模块。 public/ 存放静态文件,Webpack 不会对这个目录中的文件进行处理。...yarn.lock 或 package-lock.json 锁定文件,记录了确切的依赖版本,确保在不同环境中安装的依赖一致。

    58810

    npm的卸载与安装流程

    安装(npm 和node是一起的,安装成功node后就会自带npm) 1、下载地址为:https://nodejs.org/en/ 2、检查是否安装成功:如果输出版本号,说明我们安装node环境成功...,即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了。...卸载 1.打开360软件管家等软件卸载 2.打开c盘下的program下的nodejs删除掉 查找.npmrc文件删除(在用户文件夹下,这个文件是存储你设置的npm源,也可以中找到这个文件直接修改安装源...) npm 安装和卸载模块 npm install xxx 安装到全局 npm install -g xxx 安装到开发环境 devDependencies npm install –save-dev...xxx(简写npm i -D xxx) 安装到生产环境 dependencies npm install –save(简写npm i -S xxx) ②利用 npm 删除xxx模块; 删除xxx

    6.1K30

    npm 模块 移除_【已解决】npm卸载模块后该模块并没有从package.json中去掉

    大家好,又见面了,我是你们的朋友全栈君。...折腾: 期间,遇到一个奇怪的现象: 用npm remove xxx或npm uninstall xxx后 xxx并没有从package.json中去掉:➜ HeadquarterReport git:...结果发现: package.json 中的配置: “element-ui”: “1.4.3”, 并没有主动删除掉: 所以再去安装新的:➜ HeadquarterReport git:(permission-control...果然package.json被更新了,dependencies加上了: “element-ui”: “^2.0.1”, 【总结2】 看来是: npm install/uninstall xxx是,只是安装.../卸载对应模块 只有加上: –save –save-dev 等参数,才能把对应模块版本要求,加入到/删除掉 package.json中。

    1.9K20
    领券