Webpack 2.0 学习过程资料整理

Webpack学习过程及项目使用问题及资料整理 -- 2017.11.02

Webpack的简介及使用教程

Webpack核心概念:webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle - 通常只有一个,由浏览器加载。

参考资料网址汇总

Webpack 打包参数汇总

  • --config webpack.config.js : 指定使用的配置文件
  • --progress: 打包进度
  • --display-modules: 打包的模块
  • --colors: 是否彩色显示,打包提示信息
  • --display-reasons: 打包原因
  • --watch: 自动监控文件变化
  • --hot: 开启模块热替换
  • --define: 定义任意的自由变量: --define process.env.NODE_ENV='development'
  • --debug : 把loader设置为 debug 模式
  • --profile: 捕获编译时每个步骤的时间信息,并且将这些信息包含在输出中
  • --bail: 一旦发生错误,立即终止
  • --cache: 开启缓存[watch 时会默认打开]

Webpack 配置及插件汇总

  • 核心插件
    • common-chunks-webpack-plugin
    • html-webpack-plugin
    • i18n-webpack-plugin
    • compression-webpack-plugin
    • extract-text-webpack-plugin
  • 推荐插件
    • CommonsChunkPlugin
    • webpack-bundle-analyzer(BundleAnalyzerPlugin)
    • optimize-css-assets-webpack-plugin(OptimizeCssAssetsPlugin)
  • 特殊插件

    • cross-env 使用cross-env解决跨平台设置NODE_ENV的设置问题
    
    
    • webpack-monitor 捕获构建生成的,生产环境中包体关键统计指标,提供了交互式地分析工具,来帮助开发者更好地审视包体的构成,以此来识别与选择可用的优化策略。

devtool 模块简介

webpack devtool里的7种SourceMap模式

devtool: "source-map", // or "inline-source-map"

entry 和 output 模块简介

  • 一个入口一个出口的情况
module.exports = {
  entry: './main.js',
  output: {
    filename: 'bundle.js'
  }
};
编译后的文件为  bundle.js
  • 多个入口多个出口的情况(文件一一对应)
module.exports = {
  entry: {
    bundle1: './main1.js',
    bundle2: './main2.js'
  },
  output: {
    filename: '[name].js'
  }
};
编译后的文件为  bundle1.js, bundle2.js

resolve 模块简介

module 模块简介

  • js或者jsx文件的处理
module: {
    loaders:[
      {
        test: /\.js[x]?$/,
        exclude: /node_modules/,
        loader: 'babel-loader?presets[]=es2015&presets[]=react',
      },
    ]
  }
  • css 文件的处理
module: {
    loaders:[
      { test: /\.css$/, loader: 'style-loader!css-loader' },
    ]
 }
  • 图片的处理(jpg、png),小于8kb(limit可修改为其他)的,转为base64
module: {
    loaders:[
      { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'}
    ]
 }

plugins 插件模块简介

  • var webpack = require('webpack');
  • uglifyJsPlugin(webpack.optimize.UglifyJsPlugin)
// js压缩插件
new uglifyJsPlugin({
      compress: {
        warnings: false
      }
    })
  • DefinePlugin (webpack.DefinePlugin)
// 设置webpack默认的环境变量
new webpack.DefinePlugin({
      __DEV__: JSON.stringify(JSON.parse(process.env.DEBUG || 'false'))
    })
    执行 env DEBUG=true, 修改参数的值
  • CommonsChunkPlugin (webpack.optimize.CommonsChunkPlugin)
// 提取公共部分插件(js,css)
new CommonsChunkPlugin('init.js')
// html 模板修改插件
new HtmlwebpackPlugin({
      title: '标题',
      template: 'index.html', // 源模板文件
      filename: 'index.html'   // 输出文件【注意:这里的根路径是module.exports.output.path】
    }),
  • HotModuleReplacementPlugin (webpack.HotModuleReplacementPlugin)
// 热更新插件
  new webpack.HotModuleReplacementPlugin(),
  • BundleAnalyzerPlugin (require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
// 图形化打包结果显示
new BundleAnalyzerPlugin(), 
  • OpenBrowserPlugin (open-browser-webpack-plugin)
// 自动打开浏览器插件,端口号默认 8080
new OpenBrowserPlugin({
      url: 'http://localhost:8080'
    }),
  • BannerPlugin (webpack.BannerPlugin)
//这里是打包文件头部注释!
new webpack.BannerPlugin('这是一个注释头')
  • LoaderOptionsPlugin (webpack.LoaderOptionsPlugin)
// 去除调试代码,压缩代码
  • CopyWebpackPlugin(copy-webpack-plugin)
// 复制手动引入的资源文件到指定目录
new CopyWebpackPlugin([
        {
            from: config.srcPath + '/static',
            to: config.outputPath,
            ignore: ['.*']
        }
    ])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容