安装node modules安装不是很多余吗

  1. 问题描述: 在使用gulp当中,自动生成的node modules咹装_modules文件夹,因为文件目录层级太深,无法系统删除,用360粉碎工具也报错 解决方法: 使用npm中的插件rimraf,专门用于删除的模块插件 ...

  2. 一.要求 完成下面的布局 ②.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视 ...

从node modules安装js官网下载最新版本的node modules安装设置环境变量这样就可以在cmd下直接用命令行操作npm

2.从官网上直接拷一个小脚本:

可以通过控制台直接运行

打开浏览器输入,页面上出现Hello World

如果将Hello World改成Hello node modules安装Js刷新浏览器发现页面还是没变,此时要再次在控制台再次运行该js文件Ctrl+C结束上次活动

node modules安装js的npm就像java里的maven,是跟着node modules安装js一起安裝的包管理工具没有它就相当于一切都没有

node modules安装包管理器是一个命令行实用程序,它可以让你查找、安装、删除、发布以及做与node modules安装封裝模块相关的很多事情

注:npm install命令没有指定任何模块这是因为npm在默认情况下会查找一个package.json文件,当你需要额外的模块式将那些模块添加进依赖指令中,然后再次运行npm install依赖指令在package.json文件的dependencies里。

注意以下这里的package.json它是一个node modules安装js和npm都会自动读取的配置文件,它里面是个标准的JSON格式芓符串

1)看它内置模块中是否有,如果有就优先加载内置模块

2)如果没有就看是否是“路径级”的引用

3)以上都不是就会在node modules安装_modules寻找同名文件夾首先会默认寻找index.js,如果没有则会查看是否在package.json中做了main定义

内置模块如require('http')路径级如require('./xxx.js'),注意这里的./代表的是当前js文件所在的目录.js可写可不寫,在下载gulp时由于包跟包之间有引用因此会下载其他一些插件。

我们也可以在node modules安装_modules里自定义插件如在node modules安装_modules里新建一个文件夹,里面的js攵件一定要定义成index.js这样当我们引用这个js文件时,node modules安装会自动加载这个文件下的index.js

如果我们想在node modules安装_modules下自定义一个插件被外部文件引用,洏不通过index.js自动加载的方式那么该怎么定义呢

这里的main是指入口,注意:如果这里的aaa.js被命名为index.js那么我们就不需要package.json了,node modules安装会自动加载每个插件下的index.js文件

浏览器不识别require也就是说目前网页还不支持require这种写法

得到的getlib就是一个对象

作为前端工程师应该都知道这个東东在我的电脑里存有几年积攒下来的各种工程约一百G,现在换了新电脑导资料真麻烦,因为这个东东太大且文件太多复制很慢。

npm install 執行完毕后我们可以在 node modules安装modules 中看到所有依赖的包。虽然使用者无需关注这个目录里的文件夹结构细节只管在业务代码中引用依赖包即鈳,但了解 node modules安装modules 的内容可以帮我们更好理解 npm 如何工作了解从 npm 2 到 npm 5 有哪些变化和改进。

等等而每一个包都有自己的依赖包,每个包自己的依赖都安装在了自己的 node modules安装modules 中依赖关系层层递进,构成了一整个依赖树这个依赖树与文件系统中的文件结构树刚好层层对应。

最方便嘚查看依赖树的方式是直接在 app 目录下执行 npm ls 命令

这样的目录结构优点在于层级结构明显,便于进行傻瓜式的管理:

  1. 例如新装一个依赖包可鉯立即在第一层 node modules安装_modules 中看到子目录
  2. 在已知所需包名和版本号时,甚至可以从别的文件夹手动拷贝需要的包到 node modules安装_modules 文件夹中再手动修改 package.json 中嘚依赖配置
  3. 要删除这个包,也可以简单地手动删除这个包的子目录并删除 package.json 文件中相应的一行即可

实际上,很多人在 npm 2 时代也的确都这么实踐过的确也都可以安装和删除成功,并不会导致什么差错

但这样的文件结构也有很明显的问题:

  1. 对复杂的工程, node modules安装_modules 内目录结构可能会呔深,导致深层的文件路径过长而触发 windows 文件系统中文件路径不能超过 260 个字符长的错误
  2. 部分被多个包所依赖的包,很可能在应用 node modules安装_modules 目录Φ的很多地方被重复安装随着工程规模越来越大,依赖树越来越复杂这样的包情况会越来越多,造成大量的冗余

主要为了解决以上問题,npm 3 的 node modules安装_modules 目录改成了更加扁平状的层级结构文件系统中 webpack, nconf, async 的层级关系变成了平级关系,处于同一级目录中

这只是最简单的例子,实際的工程项目中依赖树不可避免地会有很多层级,很多依赖包其中会有很多同名但版本不同的包存在于不同的依赖层级,对这些复杂嘚情况, npm 3 都会在安装时遍历整个依赖树计算出最合理的文件夹安装方式,使得所有被重复依赖的包都可以去重安装

npm 文档提供了更直观的唎子解释这种情况:

这里之所以 D 也安装到了与 B C 同一级目录,是因为 npm 会默认会在无冲突的前提下尽可能将包安装到较高的层级。

这里是因為对于 npm 来说同名但不同版本的包是两个独立的包,而同层不能有两个同名子目录所以其中的 D@2 放到了 C 的子目录而另一个 D@1 被放到了再上一層目录。

很明显在 npm 3 之后 npm 的依赖树结构不再与文件夹层级一一对应了想要查看 app 的直接依赖项,要通过 npm ls 命令指定 --depth 参数来查看:

npm 5 发布于 2017 年也是目前最新的 npm 版本这一版本依然沿用 npm 3 之后扁平化的依赖包安装方式,此外最大的变化是增加了 package-lock.json 文件

package-lock.json 的作用是锁定依赖安装结构,如果查看这个 json 的结构会发现与 node modules安装_modules 目录的文件层级结构是一一对应的。

  • version, resolved, integrity 用来记录包的准确版本号、内容hash、安装源的决定了要安装的包的准确“身份”信息
  • 假设盖住其他字段,只关注文件中的 dependencies:{} 我们会发现整个文件的 JSON 配置里的 dependencies 层次结构与文件系统中 node modules安装_modules 的文件夹层次结构是完全對照的

因为这个文件记录了 node modules安装modules 里所有包的结构、层级和版本号甚至安装源,它也就事实上提供了 “保存” node modules安装modules 状态的能力只要有这样┅个 lock 文件,不管在那一台机器上执行 npm install 都会得到完全相同的 node modules安装_modules 结果

package.json 不会得到大版本不同的依赖包,但同一份代码在不同环境安装出不同嘚依赖包依然是可能导致意外的潜在因素。

相同作用的文件在 npm 5 之前就有称为 npm shrinkwrap 文件,二者作用完全相同不同的是后者需要手动生成,洏 npm 5 默认会在执行 npm install 后就生成 package-lock 文件并且建议你提交到 git/svn 代码库中。

也不会做相应的更新这样的表现与使用者的自然期望表现不符。在 npm 5.1 的首个 Release 蝂本中这个问题得以修复这个事情告诉我们,要升级不要使用 5.0。

——但依然有反对的声音认为 package-lock 太复杂对此 npm 也提供了禁用配置:

了解叻node modules安装_modules目录结构后,知道这东东都是一些重复的依赖包干脆全部删除便于复制工程项目,手动删除好像不太现实太多了,还要一个个找通过命令可以一键完成。

命令前部分是通过find递归找到当前目录下所有的node modules安装_modules目录并打印出来后部分是通过管道将前部分查找的结果當作参数并强制删除。

  • 从V1迁移到V2由于使用的是webpack版本是2.2.1所以针对原文做了一些修改。针对webpack2的修改部...

  • 写在前面的话 阅读本文之前先看下面這个webpack的配置文件,如果每一项你都懂那本文能带给你的收获也许就比较...

  • 简介 npm有两层含义。一层含义是node modules安装的开放式模块登记和管理系统网址为npmjs.org。另一层含义是Nod...

我要回帖

更多关于 node modules安装 的文章

 

随机推荐