webpack2 配置分享

任务型学习..

活动页配置

先放一份配置(适合简单的活动页)
...可以使用ES6,使用模块,使用sass,还有postcss后处理工具(这个选择了另外做配置postcss.config.js),另外添加了两个模块,一个负责压缩,一个负责另外生成html文件,更新对应的版本号。
@Q:最开始选择hash值添加在js或者css后,后来发现每次更新,都是另外生成两个js/CSS文件..因为不重名,不是被替换...后来想着自己加hash只是为了清除缓存,就选择直接在html加版本号了。
@Q:遗留的问题是还不会处理生成的html内对js和css的路径处理。

let path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const HtmlPlugin = require('html-webpack-plugin');

module.exports = {
    entry: path.resolve(__dirname, 'src/index.js'), //这里是绝对路径
    output: {
        path: path.resolve(__dirname, 'build/'),
        filename: '28newer.js',
    },
    devtool: 'source-map', //添加map,便于debug
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader",
                    use: [{
                        loader: "css-loader" // add ?minimize could minify translates CSS into CommonJS
                    }, {
                        loader: "postcss-loader"
                    },
                        {
                            loader: "sass-loader" // compiles Sass to CSS
                        }]
                })
            }, {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: "babel-loader"
            }
        ]
    },
    plugins: [
        new HtmlPlugin({
            template: 'test.html', //模板选择,支持ejs等,具体配置看文档
            filename: 'index.html', //不是写生成路径,是写名字
            title: 'exam', //生成的html文档
            hash: true // 是否为html包含的script和css添加hash值
        }),
        new ExtractTextPlugin("28newer.css") ,//这里负责另外生成css,而不内嵌
        new UglifyJSPlugin({ //这里是负责压缩的
            // 最紧凑的输出
            beautify: false,
            // 删除所有的注释
            comments: false,
            compress: {
                // 在UglifyJs删除没有用到的代码时不输出警告
                warnings: false,
                // 删除所有的 `console` 语句
                // 还可以兼容ie浏览器
                drop_console: true,
                // 内嵌定义了但是只用到一次的变量
                collapse_vars: true,
                // 提取出出现多次但是没有定义成变量去引用的静态值
                reduce_vars: true,
            }
        })
    ]
};

考虑重复模块处理配置

待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,253评论 7 35
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,728评论 7 110
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 8,222评论 40 247
  • 谨以此文,献给连计划都不会制定的同学们。 --- PTE Bro 1. 完整做一套official guide,熟...
    PTE_Bro阅读 7,015评论 0 2
  • 三:打了个利落的败仗 再见陈选,已经是开了学,还是那么流里流气,天天腻歪着宁宇,两三天不给好脸色看,他就摆出个小媳...
    ang_ing_阅读 203评论 0 0