webpack 配置结构

webpack 整体配置结构

const path = require(‘path’);

module.exports = {
  // 入口文件,webpack 执行构建的起点
  entry: ‘main.js’,
  // 输出配置,webpack处理后输出怎么样的结果 
  output: {
    // 输出文件存放位置,必须是string 类型的绝对路径 
    path: path.resolve(__dirname, ‘dist’),
    // 输出文件名 
    filename: ‘bundle.js’,
    // 发布到线上的所有资源的 URL 前缀,string 类型
    publicPath: ‘/assets/’,
    // 导入库名称
    library: ‘MyLibrary’,
    // 导入库类型
    libraryTarget: ‘umd’,
    // 是否生成有效文件路径信息到代码中
    pathinfo: true,
    // 附加 Chunk 的文件名称
    chunkFilename: ‘[id].js’,
    // JSONP 异步加载资源时的回调函数名称,需要和服务端搭配使用
    jsonpFunction: ‘myWebpackJson’,
    // 生成 Source Map 文件的名称
    sourceMapFilename: ‘[file].map’,
    // 浏览器开发者工具里显示的源码模块名称
    devtoolModuleFilenameTemplate: ‘webpack://[resource-path]’,
    //  异步加载跨域资源使用的方式
    crossOriginLoading: ‘anonymous’
  },

  // 配置模块相关
  module: {
    // 配置 Loader 规则,可配置多个规则
    rules: [
      {
        // 正则匹配使用 Loader 的文件
        test: /\.jsx?$/,
        // Loader 规则只应用在特定文件 
        include: [
          path.resolve(__dirname, ‘xxx’)
        ],
        // Loader 规则会忽略这些文件
        exclude: [
          path.resolve(__dirname, ‘xxx’)
        ],
        // Loader 规则列表,从后向前执行
        use: []
      },
    ],
    // 不需要解析和处理的模块,通过正则匹配模块
    noParse: [
      /special-library\.js$/,
    ],
  },

  // 配置插件
  plugins:[],
  // 配置寻找模块规则
  resolve: {
    // 寻找模块的根目录,数组类型,默认以node_modules 为根目录
    modules: [
      ‘node_modules’,
      path.resolve(__dirname, ‘app’)
    ],
    // 模块后缀名
    extensions: [‘.js’, ‘.json’],
    // 模块别名配置,用于映射模块
    // 当有多个映像规则时,可以使用 array 类型
    alias: [{
      // 映射源像
      name: ‘model’,
      // 映射像
      alias: ‘new-model’,
      // 是否只映射模块
      // true: 只有 ‘module’ 会被映射
      // false: ‘module/inner/path’ 也会被映射
      onlyModule: true
    }],
    // 是否跟随文件的软链接搜寻模块的路径
    symlinks: true,
    // 模块的描述文件
    descriptionFiles: [],
    // 模块的描述文件里描述入口的文件的字段名
    mainFields: [],
    // 是否强制导入语句写明文件后缀名
    enforceExtension: false,
  },

  // 输出文件的性能检查配置
  performance: {
    //有性能问题时输出结果
    // warning:警告
    // error:错误
    hints: false, 
    // 最大文件的大小,单位为 bytes
    maxAssetSize:  10240,
    // 最大入口文件的大小,单位为 bytes
    maxEntrypointSize: 10240,
    assetFilter: function(assetFilename) {
      //过滤要检查的文件
      // ...
    }
  },
  // 配置 source-map 类型
  devtool: ‘source-map’,
  // webpack 使用的根目录,string 类型,且必须为绝对路径
  context: __dirname,
  // 配置输入代码的运行环境,默认为 web
  target: ‘web’,
  // 使用来自 JavaScript 运行环境提供的全局变量
  externals: {},
  // 控制台输出日志控制
  stats: {
    assets: true,
    colors: true,
    errors: true,
    errorDetails: true,
    hash: true,
  },

  // devServer 相关配置
  devServer: {
    // 代理到后端服务接口
    proxy: {
      ‘api’: ‘http://local host:8080’
    },
    // 配置 DevServer HTTP 服务器的文件目录
    contentBase: path.join(__dirname, ‘public’),
    // 是否开启 Gzip 压缩
    compress: true,
    // 是否开发HTML5 History API 网页
    historyApiFallback: true,
    // 是否开启模块热加载功能
    hot: true,
    // 是否开启 https 模式
    https: false,
    // 是否捕捉 webpack 构建的性能信息
    profile: true,
    // 是否启用缓存来提升构建速度
    cache: false,

    // 是否开启监听模式
    watch: true,
    // 监听模式选项
    watchOptions: {
      // 忽略对匹配文件的监听,支持正则匹配,默认为空
      ignored: /node_modules/,
      // 响应时间,默认为 300s,防止文件更新太快导致频繁编译
      aggregateTimeout: 300,
      // 每秒询问文件是否发生变化次数,默认每秒1000次
      poll: 1000
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 更新:Webpack4已经发布,本篇是基于Webpack3的,请注意。更正:1.package.json中使用了应...
    HermitCarb阅读 1,227评论 2 4
  • -- 1. Gulp VS webpack 比较 Gulp 是一个任务管理工具,让简单的任务更清晰,让复杂的任务易...
    慢清尘阅读 3,533评论 7 16
  • 入门介绍 为什么选择webpack 大多数团队在开发新项目时会采用紧跟时代的技术,这些技术几乎都会采用“ 模块化+...
    一米阳光kk阅读 2,307评论 0 9
  • 本项目基于 入门 Webpack,看这篇就够了创建。本例程通过从头构建一个基于npm管理的前端项目,一步步的让读者...
    尤利西斯U阅读 2,657评论 0 8
  • 九,记得我在你身后 乔父乔母走好,日子倒也没有多大变化,要说变化,就是温然越来越爱笑了,虽然多是在乔燃面前。 某日...
    柠檬树下是西柚阅读 118评论 0 0