webpack配置文件实践笔记

使用es6 module编写配置文件

使用es6+来编写前端的全部代码(包括配置文件)是一个很不错的体验,es6给我们带来了不仅仅是各种feature更重要的它的模块系统可以让我们从低效的前端模块依赖中解脱出来。使用es6来编写webpack的配置文件只需要下面几步:

  1. 安装babel
  yarn add babel-core
  1. 创建.babelrc 文件 并且配置对应的plugins
{
  "plugins": [
      "transform-es2015-modules-commonjs", 
      "transform-async-to-generator"
    ]
}

注意:这里的插件只是配置的 transform-es2015-modules-commonjstransform-async-to-generator, 因为webpack本身是运于nodejs环境中的,因此我们只需要转换下模块系统就可以了也就是 es2015-modules --> commonjs

  1. 重命名 webpack.config.js 为 webpack.config.babel.js
  // es6  webpack config
 export default {
    entry:'',
    output:{
        // ....
    }
}
  1. 参考资源
    1. webpack.config.babel.js
    2. how-can-i-use-es6-in-webpack-config-js

分离配置文件

如果我们是通过 npm 脚本来管理task的话那么对应的脚本大概是下面这样的:

  {
    "scripts":{
        "dev":"webpack-dev-server --env.tag='dev' ", // 开发环境
        "build:test":"webpack --env.tag='test'",  // 测试环境
        "build:pre":"webpack --env.tag='pre'",   // 预发布环境
        "build:preo":"webpack --env.tag='pro'", // 生产环境
    }
  }

可能会更复杂,很好的将对应的配置文件分离出来其实很有必要了。

  1. 制定分离策略,我自己是思路如下


    webpack流程图
    webpack流程图
  2. 修改webpack入口文件
  import merge from 'webpack-merge';
  export default (env)=>{
      const commonConfig = require('../config/webpack.common.js');
      const envConfig = requilre(`../config/webpack.${env.tag}.config.js`);
      return merge(commonConfig,envConfig)
  }

将配置信息接入到统一配置系统

配置系统 是一个用来管理公司所有项目的配置信息的系统,当我们将webpack的配置信息接入到配置系统的时候那就意味着我们需要在运行webpack期间远程调用接口加载配置文件

修改后的配置文件如下

import axios from 'axios';
async function getConfig(env){
  const config = await axios.get(`http://xxx.xxx.xxx/config/${env.tag}`);
  return config
}
export default (env)=>{
  return getConfig(env);
}

说明

  1. 文章涉及的代码纯手写,如有出错请友好提出
  2. 以上只是一种解决方案,如您有更好的欢迎分享
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容

  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,273评论 4 31
  • 前言 webpack2和vue2已经不是新鲜东西了,满大街的文章在讲解webpack和vue,但是很多内容写的不是...
    技术宅小青年阅读 6,517评论 4 43
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,674评论 7 110
  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,140评论 7 35
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,028评论 0 21