首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webpack或node是怎么知道如何从node_modules中挑选插件的?

webpack或node是通过模块解析的方式来知道如何从node_modules中挑选插件的。

在webpack或node中,模块解析是通过一系列的规则来确定模块的位置和加载方式。当遇到requireimport语句时,它们会根据以下规则来解析模块路径:

  1. 相对路径解析:如果路径以./../开头,表示相对于当前文件的路径,webpack或node会根据当前文件的位置来解析模块路径。
  2. 绝对路径解析:如果路径以/开头,表示绝对路径,webpack或node会直接根据该路径来解析模块。
  3. 模块路径解析:如果路径不是相对路径或绝对路径,webpack或node会将其视为模块路径,并按照一定的规则进行解析。
    • 首先,它会在当前文件所在目录的node_modules文件夹中查找是否存在该模块。
    • 如果在当前文件所在目录的node_modules中找不到该模块,则会逐级向上查找,直到找到项目根目录下的node_modules文件夹。
    • 如果在项目根目录下的node_modules中仍然找不到该模块,则会报错。

通过以上规则,webpack或node能够准确地找到需要引入的插件或模块,并进行加载和使用。

对于webpack来说,它还可以通过配置文件中的resolve.modules选项来指定额外的模块搜索路径,以便更灵活地解析模块路径。

腾讯云相关产品和产品介绍链接地址:

  • 云开发(Serverless):https://cloud.tencent.com/product/scf
  • 云函数(Serverless):https://cloud.tencent.com/product/scf
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能机器学习平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动应用开发平台(MPS):https://cloud.tencent.com/product/mps
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏引擎(GSE):https://cloud.tencent.com/product/gse
  • 腾讯云直播(CSS):https://cloud.tencent.com/product/css
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Webpack 打包优化之速度篇

在前文 Webpack 打包优化之体积篇,对如何减小 Webpack 打包体积,做了些探讨;当然,那些法子对于打包速度提升,也是大有裨益。...但是默认配置,会采用向上递归搜索方式去寻找,但通常项目目录里只有一个 node_modules,且在项目根目录,为了减少搜索范围,可以直接写明 node_modules 全路径;同样,对于别名(...如果配置 Webpack 来排除 node_modules,那么它将从 dist 已经编译目录获取文件。否则会再次编译它们。...Happypack 处理思路:将原有的 webpack 对 loader 执行过程,单一进程形式扩展多进程模式,从而加速代码构建;原本流程保持不变,这样可以在不修改原有配置基础上,来完成对编译过程优化...cacheDirectory=true),node_modules/.cache/babel-loader 则 node_modules 在任何根目录找不到任何文件夹时,加载程序将使用默认缓存目录回退到默认

1.6K20

89.精读《如何编译前端项目与组件》

2 精读 核心思想只有一句话:利用 webpack-node-externals 忽略 Webpack 对指向 node_modules require import 语句: 进行项目/组件调试时...进行组件编译时,开启 production 模式,且利用 webpack-node-externals 插件忽略 node_modules。...同时上述三个场景都在复用 webpack 一套代码基础上,利用了 webpack 生态,因此维护性和拓展性都很强。后续再加入新功能,再也不需要到处找 babel gulp 插件了!...3 总结 本文 webpack 为切入点,但其实还可以 parcel gulp 为切入点,实现前端项目、组件构建体系统一。...不过从可定制性来看,webpack 插件生态更完善,所以笔者选择了 webpack。 留下一个思考题:你项目、组件如何构建呢?用了一套代码,还是两套呢?

1K20

不会手写vue-cli脚手架,leader竟要辞退我!

我觉得,官方提供vue-cli脚手架很友好,不用想vue+webpack工作流怎么搭建,vue-loader 和 css-module怎么配置,如何安装使用eslint和editorconfig等,...经此事后,我开始不满足于一直写业务代码,我也想知道一个一个项目在破土动工前,前端leader怎么搭建一个前端项目的工作流如何去手动配置一个具体项目的webpack打包文件,包括后期SSR,服务端渲染...举个例子:在webpack4.0如何使用extract-text-webpack-plugin配置css单独分离打包,以及如何解决在升级过程碰到一些坑?...\node_modules\webpack\lib\Chunk.js:460:9) at E:\***\myproject\webpack-vue-elementUi\node_modules...:\***\myproject\webpack-vue-elementUi\node_modules\extract-text-webpack-plugin\dist\index.js:171:18 这个问题解决办法

1K10

webpack4配置详解之慢嚼细咽

经常会有人会问起 webpack、 react、 redux、甚至 create-react-app配置等等方面的问题,有些我也不懂,慢慢大家相互交流,也学到了不少。   ...今天就尝试着一起来聊聊 Webpack吧,旨在帮大家加深理解、新手更容易上路,都能从0到1搭建配置自定属于自己脚手架,对已封装好脚手架有进一步巩固,接下来苏南会详细讲解 webpack每一个配置字段作用...Entry - 这个不用解释了,看名字就是知道,它就是通往天堂/地狱 入口,一切苦难从这里开始,也从这里结束。..., output就是审判官,决定着你上天堂还是入地狱; - 指示 webpack 如何去输出、以及在哪里输出、输出格式等; - path: 输出文件目录, - filename:输出文件名,...—— chunks: 'async',它有三个值:all,async,initial //环境变更也可以直接 在启动设置 //webpack --env.NODE_ENV=local --env.production

73050

你可能不知道9条Webpack优化策略

本文以我自己经验向大家分享如何通过一些分析工具、插件以及webpack新版本一些新特性来显著提升webpack打包速度和改善包体积,学会分析打包瓶颈以及问题所在。...webpack 有时候打包很慢,而我们在项目中可能用了很多 plugin 和 loader,想知道到底哪个环节慢,下面这个插件可以计算 plugin 和 loader 耗时。...大家都知道 webpack 运行在 node 环境,而 node 单线程。...这个插件webpack.config.js中使用,该插件作用是把刚刚在webpack.dll.js打包生成dll文件引用到需要预编译依赖上来。 什么意思呢?...❞ hard-source-webpack-plugin HardSourceWebpackPlugin 为模块提供了中间缓存,缓存默认存放路径: node_modules/.cache/hard-source

1.6K30

从零开始学VUE之Webpack(Html打包插件使用)

打包html文件插件 目前我们index.html一致在项目的根目录下 我们知道,在真实发布项目的时候,发布dist文件夹内容,但是dist文件夹如果没有index,html,那么打包...(D:\zhangyugen@jd.com\vue\day1\html\4.0开始学VUE\simpleplugin\node_modules\webpack\lib\webpack.js:33:19... (D:\zhangyugen@jd.com\vue\day1\html\4.0开始学VUE\simpleplugin\node_modules\webpack\bin\webpack.js...开始学VUE\simpleplugin> 看到错误大概不能读取属性 initialize方法,一个没有定义,经过查看源码,发现在最新版本确实没有这个方法了,后来看了下老师版本是3.2.0...可以看到有index.html ? 并且也是有id="app"div自动插入了script标签,运行一下disthtml ?

76120

轻松理解webpack热更新原理

HMR作为一个Webpack内置功能,可以通过HotModuleReplacementPlugin--hot开启。那么,HMR到底怎么实现热更新呢?下面让我们来了解一下吧!...,浏览器如何知道本地代码重新编译了,并迅速请求了新生成文件?谁告知了浏览器?浏览器获得这些文件又是如何热更新成功?那让我们带着疑问看下热更新过程,源码角度看原理。...'xxx/node_modules/webpack-dev-server/client/index.js?...入口文件还有一个文件没有讲到,就是: 'xxx/node_modules/webpack/hot/dev-server.js' 这个文件代码同样会被打包到bundle.js,运行在浏览器...7. moudle.hot.check 开始热更新 通过第 6 步,我们就可以知道moudle.hot.check方法如何啦。那都做了什么?

2.7K30

手把手教你撸一个 Webpack Loader

那这个「魔术」过程如何实现呢?今天我们 webpack 核心概念之一 —— loader 来寻找答案,并着手实现这个「魔术」。...本质上来说,loader 就是一个 node 模块,这很符合 webpack 「万物皆模块」思路。既然 node 模块,那就一定会导出点什么。...知道强大功能以后,我们要怎么使用 loader 呢? 1. 配置 webpack config 文件 既然 loader webpack 模块,如果我们要使其生效,肯定离不开配置。...在异步 loader 你可以通过抛错来处理异常情况。Webpack 建议我们返回 1 至 2 个参数,第一个参数转化后 source,可以是 string buffer。...既然串联,那肯定有顺序问题,webpack 规定 use 数组 loader 执行顺序最后一个到第一个,它们符合下面这些规则: 顺序最后 loader 第一个被调用,它拿到参数 source

1K40

babelrc在哪里?

但是在web目录下进行webpack构建时候,因为用到了components目录,所以babel-loader就直接使用了根目录配置,因为babel查找被转换代码的当前目录,而不是运行的当前目录...但是webpack配置,大家可以发现,我竟然还要对路径进行resolve?这是有必要吗?有的。。。因为babel plugin或者preset都会先从被转换文件的当前目录进行模块查找。...这是server目录下故事。代码里引用到了一个安装在node_modules模块A,这个A模块src目录下jsx文件,经过babel转换后发布到dist模块。...但是,我惊讶发现,不知道怎么给这些插件配置选项呀。 不过,我旋即也发现,还有个--presets。presets,直译即是预配置,我们就常常用到各种presets 如 es2015,react。...那么,我自定义一些preset也就能解决我问题了。 babel node_modules/A/dist --out-dir node_modules/A/dist --presets=.

1.8K20

【学习笔记】尚硅谷Webpack5入门到原理 | 高级篇

是什么顾名思义就是只能匹配上一个 loader, 剩下就不匹配了。怎么用将rules配置oneof数组,数组存放匹配值。...而这些文件不需要编译可以直接使用。所以我们在对 js 文件处理时,要排除 node_modules 下面的文件。...是什么Tree Shaking 一个术语,通常用于描述移除 JavaScript 没有使用上代码。注意:它依赖 ES Module。怎么Webpack 已经默认开启了这个功能,无需其他配置。...是什么image-minimizer-webpack-plugin: 用来压缩图片插件怎么用下载包npm i image-minimizer-webpack-plugin imagemin -D还有剩下包需要下载...\node_modules\optipng-bin\vendor\optipng.exe ENOENT我们需要安装两个文件到 node_modules 才能解决, 文件可以课件中找到:jpegtran.exe

3.1K20

webpack4配置详解之慢嚼细咽

[webpack4配置详解之慢嚼细咽] 前言   经常会有群友问起webpack、react、redux、甚至create-react-app配置等等方面的问题,有些我也不懂,慢慢大家相互交流...今天就尝试着一起来聊聊Webpack吧,旨在帮大家加深理解、新手更容易上路,都能从0到1搭建配置自定属于自己脚手架,对已封装好脚手架有进一步巩固,接下来苏南会详细讲解webpack每一个配置字段作用...,output就是审判官,决定着你上天堂还是入地狱; 指示 webpack 如何去输出、以及在哪里输出、输出格式等; path: 输出文件目录, filename:输出文件名,它一般跟你entry...chunks: 'async',它有三个值:all,async,initial //环境变更也可以直接 在启动设置 //webpack --env.NODE_ENV=local --env.production..., modules:webpack 解析模块时应该搜索目录, 其他 plugins、unsafeCache、enforceExtension,基本没有怎么用到, //extensions 后缀可以省略

64040

babelrc在哪里?

但是在web目录下进行webpack构建时候,因为用到了components目录,所以babel-loader就直接使用了根目录配置,因为babel查找被转换代码的当前目录,而不是运行的当前目录...但是webpack配置,大家可以发现,我竟然还要对路径进行resolve?这是有必要吗?有的。。。因为babel plugin或者preset都会先从被转换文件的当前目录进行模块查找。...这是server目录下故事。代码里引用到了一个安装在node_modules模块A,这个A模块src目录下jsx文件,经过babel转换后发布到dist模块。...但是,我惊讶发现,不知道怎么给这些插件配置选项呀。 不过,我旋即也发现,还有个--presets。presets,直译即是预配置,我们就常常用到各种presets 如 es2015,react。...那么,我自定义一些preset也就能解决我问题了。 babel node_modules/A/dist --out-dir node_modules/A/dist --presets=.

2.3K90

0到1开启一个全新TypeScript项目

接下来我们以下三个方面来介绍我们如何开启一个全新 TypeScript 项目的:项目配置和目录设计方案,以及一些常见问题处理方案。...“include”默认值当前目录及其子目录下所有 TypeScript 文件,“exclude”默认情况下会排除 node_modules、bower_components、jspm_packages...typeRoots 然后 typeRoots,它默认值 node_module 下 @type,以及各个子路径下 node_modules /@types。...比如项目中会引入许多第三方库,而这些库基于 JavaScript 开发,通常这些库类型声明文件会放到 node_modules/@type 下。...公共组件 / 通用方法某些参数类型 还有一类公共组件或者通用方法某些参数类型,右边代码可以看到,这里 TreeSelect 有一个属性 flatOptions, 它类型就是左侧定义

56010

webpack学习笔记(原理,实现loader和插件

输出文件分析 虽然在前面的章节你学会了如何使用 Webpack ,也大致知道其工作原理,可是你想过 Webpack 输出 bundle.js 是什么样子吗?...Loader 将会很麻烦,因为你需要确保编写 Loader 源码node_modules 目录下。...在开发插件时,你可能会不知道如何下手,因为你不知道该监听哪个事件才能完成任务。...在开发插件时,还需要注意以下两点: 只要能拿到 Compiler Compilation 对象,就能广播出新事件,所以在新开发插件也能广播出事件,给其它插件监听使用。...即 Node.js 执行入口文件,设置为 Webpack 执行入口文件 node_modules/webpack/bin/webpack.js。

1.6K30

入门webpack(下)

插件(Plugins) 插件(Plugins)用来拓展Webpack功能,它们会在整个构建过程中生效,执行相关任务。...使用插件方法 要使用某个插件,我们需要通过npm安装它,然后要做就是在webpack配置plugins关键字部分添加该插件一个实例(plugins一个数组)继续看例子,我们添加了一个实现版权声明插件...bundled JavaScript file 知道Webpack插件如何使用了,下面给大家推荐几个常用插件 HtmlWebpackPlugin 这个插件作用是依据一个简单模板,帮你生成最终...,还需要在你JS模块执行一个Webpack提供API才能实现热加载,虽然这个API不难使用,但是如果React模块,使用我们已经熟悉Babel可以更方便实现功能热加载。...整理下我们思路,具体实现方法如下 Babel和webpack独立工具 二者可以一起工作 二者都可以通过插件拓展功能 HMR一个webpack插件,它让你能浏览器实时观察模块修改后效果,但是如果你想让它工作

85460

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券