webpack.config.js

var htmlWebpackPlugin = require('html-webpack-plugin');//引用plugin,引用目的见自动生成html的文见

var path=require('path')//nodejs提供的获取路径的方法

//commonjs的模块化输出

module.exports = {

  //context:,//运行环境的上下文,默认值为我们 运行该脚本的目录,我此处是根目录所以不需要写,如果你的不是请配置你的运行目  
    entry: './src/script/main.js',//打包的入口
  //entry:['./src/script/main.js','./src/script/a.js'],//表示将两个文件打包在一起

  //entry:{

    main:'./src/script/main.js',

    a:'./src/script/a.js',

    b:'./src/script/b.js',

    c:'./src/script/c.js',

  },  //如果output写的输出文件是一个的话,这种写法 还是会打包在一个文件里

  output:{ //打包后的文件放在什么地方

    path:'./dist/js',

    //path:'dist', 将html文件输出到dist目录下

    //filename:'js/[name]-[chunkhash].js', //将生成的js文件 输出到js目录下

    filename:'bundle.js' //打包后的文件名

    //filename:'[name]-[hash].js', //hash是指本次打包的hash

    //filename:'[name]-[chunkhash].js',

    publicPath:'static/dist'//上线后,引用的打包路径

  },

  plugins:[//使用引用的plugin

    new htmlWebpackPlugin({

      filename:'index-[hash].html', //生成的html的 名字,如果每次生成都带hash我们会很难查看哪个是最新生成的,所以我们一般的写法都是'index.html'

      template:'index.html', //你想让生成的文件被那个html引用这里就写哪个

      inject:'head', //想把生成的js文件的引用放在什么标签里,这里是放在head标签里

      //传递参数,将该参数在界面上引用

      title:'hhm is  good',

      aa:'two',

      minify:{

        removeComments:true, //删除注释
        collapseWhitespace:true//删除空格 
   drop_debugger: true, // 移除debugger 
 drop_console: true, // 移除console 
   pure_funcs: ['console.log','console.info']

 



        //更多的属性可见官网api文档

      }

    }),

    new htmlWebpackPlugin({

      filename:'a.html',

      template:'index.html',

      inject:head,

      title:'this is a.html',

      //chunks:['a']//指定当前生成的html引入哪些js

      excludeChunks:['b','c']//排除b c js 其它的都引入

    }),

    new htmlWebpackPlugin({

      filename:'b.html',

      template:'index.html',

      inject:head,

      title:'this is b.html',

      chunks:['b']//指定当前生成的html引入哪些js

    }),

    new htmlWebpackPlugin({

      filename:'c.html',

      template:'index.html',

      inject:head,

      title:'this is c.html',

      chunks:['c']//指定当前生成的html引入哪些js

    })

  ],

  module:{

    loaders:[

      {test:/\.js$/,

        loader:'babel',

        exclude:path.resolve(_dirname,'node_modules'),//告诉webpack不想处理的目录,提高打包速度。path.resolve是解析为绝对路径

        include:path.resolve(_dirname,'src'),//要处理的目录  

       query:{ //这段代码也可以写在package.json里

        presets:['latest'] //preset是将es6转换成浏览器可理解的js代码

       }

      },// 告诉浏览器我们处理js的时候 要使用babel,它的presets我们使用latest

      {

        test:/\.css$/,

        loader:'style-Loader!css-Loader!postcss-loader'

        //处理通过@Import a.css引入css里的文件impotLoaders的值表示我们在css-loader之后还有几个loader要处理,我们这里只有一个postcss-loader,所以这里写1(less中已经帮我们默认的处理了这种情况)
        loader:'style-Loader!css-Loader?importLoaders=1!postcss-loader'//style-Loader可简写成style,其它同理

      },

      {

        test:/\.less$/,

        loader:'style!css!postcss!less' //放置顺序:如果你需要把postcss放在webpack的配置文件中就必须放在style-loader前面和sass或less-loader的后面

      },

      {

        test:/\.html$/,

        loader:'html'

      },

      {//只要是添加了图片的loader,不管是样式中的引用还是界面上的引用它会被处理

        test:/\.(png|jpg|gif|svg)$/i,

        loader:'file-loader', //如果图片很多建议用这个

        //loader:'url-loader',

        //loaders:[ //如果这样写下面的query就要去掉

          'url-loader?limit=2000$name=img/[name]-[hash:5].[ext]',

          'image-webpack'

        ]

        query:{ //图片打包后的输出目录

          //limit:20000,

          name:'img/[name]-[hash:5].[ext]'

        }

      }

    ]

  },

  postcss:[ //处理不容易被浏览器解析的css

    require('autoprefixer')({

      broswers:['last 5 versions'] //对浏览器的版本进行处理

      

    })

  ]

}

  

 
 
posted @ 2017-03-25 09:13  吃草的虾米  阅读(229)  评论(0编辑  收藏  举报