13webpack配置resolve

Resolve

Webpack 在启动后会从配置的入口模块出发找出所有依赖的模块,Resolve 配置 Webpack 如何寻找模块所对应的文件。 Webpack 内置 JavaScript 模块化语法解析功能,默认会采用模块化标准里约定好的规则去寻找,但你也可以根据自己的需要修改默认的规则。

alias

        resolve.alias  配置项通过别名来把原导入路径映射成一个新的导入路径。例如使用以下配置:

        // Webpack alias 配置
        resolve:{
          alias:{
            components: ‘./src/components/‘
          }
        }
        当你通过  import Button from ‘components/button 导入时,实际上被 alias 等价替换成了  import Button from ‘./src/components/button‘ 。

        以上 alias 配置的含义是把导入语句里的  components  关键字替换成  ./src/components/ 。

        这样做可能会命中太多的导入语句,alias 还支持 $ 符号来缩小范围到只命中以关键字结尾的导入语句:

        resolve:{
          alias:{
            ‘react$‘: ‘/path/to/react.min.js‘
          }
        }
         react$  只会命中以  react  结尾的导入语句,即只会把  import ‘react‘  关键字替换成  import ‘/path/to/react.min.js‘ 。
    

modules

        resolve.modules  配置 Webpack 去哪些目录下寻找第三方模块,默认是只会去  node_modules  目录下寻找。 有时你的项目里会有一些模块会大量被其它模块依赖和导入,由于其它模块的位置分布不定,针对不同的文件都要去计算被导入模块文件的相对路径, 这个路径有时候会很长,就像这样  import ‘../../../components/button‘  这时你可以利用  modules  配置项优化,假如那些被大量导入的模块都在  ./src/components  目录下,把  modules  配置成

        modules:[‘./src/components‘,‘node_modules‘]
        后,你可以简单通过  import ‘button‘  导入。
    

extensions

        在导入语句没带文件后缀时,Webpack 会自动带上后缀后去尝试访问文件是否存在。  resolve.extensions 用于配置在尝试过程中用到的后缀列表,默认是:

        extensions: [‘.js‘, ‘.json‘]
        也就是说当遇到  require(‘./data‘)  这样的导入语句时,Webpack 会先去寻找  ./data.js  文件,如果该文件不存在就去寻找  ./data.json  文件, 如果还是找不到就报错。

        假如你想让 Webpack 优先使用目录下的 TypeScript 文件,可以这样配置:

        extensions: [‘.ts‘, ‘.js‘, ‘.json‘]
    

mainFields

        有一些第三方模块会针对不同环境提供几分代码。 例如分别提供采用 ES5 和 ES6 的2份代码,这2份代码的位置写在  package.json  文件里,如下:

        {
          "jsnext:main": "es/index.js",// 采用 ES6 语法的代码入口文件
          "main": "lib/index.js" // 采用 ES5 语法的代码入口文件
        }
        Webpack 会根据  mainFields  的配置去决定优先采用那份代码, mainFields  默认如下:

        mainFields: [‘browser‘, ‘main‘]
        Webpack 会按照数组里的顺序去 package.json  文件里寻找,只会使用找到的第一个。

        假如你想优先采用 ES6 的那份代码,可以这样配置:

        mainFields: [‘jsnext:main‘, ‘browser‘, ‘main‘]
    

原文地址:https://www.cnblogs.com/lucy-xyy/p/11733275.html

时间: 2024-10-07 03:19:13

13webpack配置resolve的相关文章

webpack的配置

使用webpack工具需要配置一个根目录下的配置文件,文件名默认为webpack.condfig.js,配置文件导出一个模块对象,包含了webpack工具的相关配置参数,这个模块对象将会以参数形式被引用. 参数 : entry 该参数对象指明了入口文件的配置: //页面入口文件配置 entry: { demo : [baseUrl + "demo.js"], }, 参数 : output 该参数对象指明了文件被工具经过打包等操作后的输出配置,包括输出的文件的存放位置和文件名称等: //

vue-cli的webpack模版,相关配置文件dev-server.js与webpack.config.js配置解析

1.下载vue-cli [html] view plain copy npm install vue-cli -g vue-cli的使用与详细介绍,可以到github上获取https://github.com/vuejs/vue-cli 2.安装webpack项目模版 [html] view plain copy vue init <template-name> <project-name> 比如: [html] view plain copy vue init webpack m

webpack 使用别名(resolve.alias)解决scss @import相对路径导致的问题

webpack.conf.js 中 resolve.alias 配置 resolve: { extensions: ['.js', '.vue'], alias: { '@': path.resolve(__dirname, 'src'), '@scss': path.resolve(__dirname, 'src', 'scss'), } } 配置了resolve.alias 后,在js中我们可以这样用 // 原本这样写 import hongAlert from './../src/scss

webpack配置模块的查找范围

一般我们的入口文件会引入一下公共的样式文件,比如这样 import './style' 但是这个样式文件并不会生效呀,因为你的写法不对鸭,你要把文件的后缀名也要写 import './style.css' 为什么会这样了,这是因为commonJS文件查找的形式,一般会先找JS,再找JSON,再找文件,文件里面的index.js,反正就是很复杂,具体的去看看源码吧! 如何解决这个问题,就是在webpack的配置文件中配置 resolve: { extensions: ['.js', '.json'

webpack 学习

我的 webpack.config.js module.exports = { entry: [ './src/js/app.js', './src/js/my.js' ], output: { path: __dirname + '/output/', publicPath: "/output/", filename: 'main.js' }, module: { loaders: [ {test: /\.(jpg|png)$/, loader: "url?limit=81

webpack1.x 升级到 webpack2.x 英文文档翻译

近日项目要升级到webpack2.2,原来使用的webpack版本是1.12,在升级项目的同时,翻译一下官方的升级文档,去掉了一些不常用的配置. resolve.root, resolve.fallback,resolve.modulesDirectories, ,这三个选项现在全部合并到resolve.modules一个选项中.关于resolving,查看更多   resolve.extensions 这个配置项不再强制要求传入一个空字符串,这个行为被移动到了resolve.enforceEx

webpack的安装和使用

Webpack是什么 首先可以看下 官方文档 ,文档是最好的老师. Webpack是由Tobias Koppers开发的一个开源前端模块构建工具.它的基本功能是将以模块格式书写的多个JavaScript文件打包成一个文件,同时支持CommonJS和AMD格式.但让它与众不同的是,它提供了强大的loader API来定义对不同文件格式的预处理逻辑,从而让我们可以将CSS.模板,甚至是自定义的文件格式当做JavaScript模块来使用.Webpack 基于loader还可以实现大量高级功能,比如自动

160816、webpack 入门指南

什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以直接使用 require(XXX) 的形式来引入各模块,即使它们可能需要经过编译(比如JSX和sass),但我们无须在上面花费太多心思,因为 webpack 有着各种健全的加载器(loader)在默默处理这些事情,这块我们后续会提到. 你可以不打算将其用在你的项目上,但没有理由不去掌握它,因为以近期

gulp,grunt,webpack 菜鸟整理

首先准确说把webpack放在这儿不太好,因为webpack准确说更有点类似require,sea这类的模块化工具:而前两者更偏向于压缩混淆之类: 三者下载npm包之后,都需要各自的config文件: grunt的congfig文件书写格式是键值,类似一种配置的编写,gulp是回掉函数,类似编程的编写:wepack的配置书写类似一种common规范: 直接代码示例: grunt module.exports = function (grunt) {    require("load-grunt-