webpack配置

var webpack = require("webpack");

// 如果要单独写一个css文件的话 安装这个插件,并且引进
var ExtractTextPlugins = require('extract-text-webpack-plugin');
// 根据上面的
var extractCSS = new ExtractTextPlugins('css/index.css');


var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {    
    // 单入口
    // entry:__dirname + '/src/js/index.js',
    // 增加入口
    entry:{
        // 输出 app.js __dirname 表示完整路径
        app:__dirname + '/src/js/index.js',
        // 其他入口
        more:[__dirname+ '/src/js/a.js',__dirname + '/src/js/b.js'],
        // 引入包  如果加入其它的就在数组中写出来比如['jquery','react']
        // 输出v.js
        v:['jquery']
    },
    // 输出
    output:{
        path:__dirname + '/assets/',
        // 一个出口
        // filename:"js/index.js",
        // 多个出口  [name]
        filename:"js/[name].js",
        // 配置的时候,这个可以省略
        // publicPath:"/assets/"
    },
    // 配置本地服务
    devServer:{
        contentBase:"./",
        host:'192.168.0.100',
        port:'8080',
        color:true
    },
    module:{
        // 可以在npmjs中搜索自己所要的包
        // 比如我现在需要编译sass 那我就可以输入sass-loader  右侧提示如何安装包npm install sass-loader
        // 复制loaders
        //  {
          //   test: /\.scss$/,
         //   loaders: ["style", "css", "sass"]
          // }

        loaders:[
        // 引进了ExtractTextPlugins换一种写法
            // {
            //     test:/\.css$/,
            //     loader:'style-loader!css-loader'
            // },
            {
                test:/\.css$/,
                loader:extractCSS.extract('style-loader',"css-loader")
            },
            // less自动转移
            {
                test: /\.less$/,
                loader: "style!css!less"
            },
            // {
            //     test:/\./,
            //     loader:
            //     include/exclude
            //     query为loader提供额外的配置
            // }
            {
                test:/\.json$/,
                loader:"json"
            },
            {
                test:/\.js$/,
                // 表示不包括这个文件夹
                exclude:/node_modules/,
                loader:'babel',
                // 
                query:{
                    // 
                    presets:['es2015','react']
                }
            },
            /*  {
                test: /\.js$/,
                exclude: /(node_modules|bower_components)/,
                loader: 'babel?presets[]=es2015'
              }*/
            // 图片配置
            {
                test:/\.png$/,
                // ?后面配置的是属性  小于1(1024)KB转为base64 [exports]后缀 [name]源文件名  url-loader改成file-loader就可以  最好用绝对路径
                loader:"url-loader?limit=1024&name=/img/[hash:8].[name].[exports]"
            }
        ]
    },
    // 插件选项
    plugins:[
    // 热加载模块
        new webpack.HotModuleReplacementPlugin(),
    // css模块提取
        extractCSS,
    // html模块
        new HtmlWebpackPlugin({
            // title:'wos',
            filename:'../index.html',
            // 模板位置。建议写绝对路径
            template:__dirname+'/src/tpl/index.html',
            // 更新到哪里,在body
            inject:'body',
            // 尽量减少这些模板的使用
            info:'Hello' 
        }),
    // js压缩
        new webpack.optimize.UglifyJsPlugin({
            compress: {
                warnings: false
            }
        }),
        // 一个引进jq的插件
        new webpack.ProvidePlugin({
            $:'jquery'
        }),
        // 共享插件块 每一个页面都有这个  这个方法只能用一次
        // new webpack.optimize.CommonsChunkPlugin('v','lib/jquery.min.js') 提取公共代码
        new webpack.optimize.CommonsChunkPlugin({
            // 只能写a 和 b 不能写a.js和b.js
            // name 是配置文件里面入口文件的键名,filename 是输出的文件名。
            names:['a','b']
            // filename: [c,d],
        })
        // 提供公共代码
        // 默认会把所有入口节点的公共代码提取出来,生成一个common.js
        // 只提取main节点和index节点
        // new webpack.optimize.CommonsChunkPlugin('common.js',['main','index']),
        // 推荐
        // new webpack.optimize.CommonsChunkPlugin({
          //           name:'common', // 注意不要.js后缀
          //           chunks:['main','user','index']
          //       }),

    ],
    // 扩展  cdn的方式  比如项目很大,就用自己的cdn
    // externals:{
    //     jquery:"http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"
    // }
    // watch:true
}

 

posted @ 2016-11-10 17:58  overAgain  阅读(316)  评论(0编辑  收藏  举报