var path = require("path"); var webpack = require("webpack"); var HtmlwebpackPlugin = require('html-webpack-plugin'); var node_modules = path.resolve(__dirname, 'node_modules'); var pathToReact = path.resolve(node_modules, 'react/dist/react.min.js'); var staticPath = 'assets'; module.exports = { entry: [ //入口文件 'webpack/hot/dev-server', './app/Main.js' ], output: { path: path.resolve(__dirname, staticPath), publicPath: "/", filename: 'assets/dev/js/build.js' }, resolve: { extensions: ['', '.js', '.jsx', 'sass'] }, module: { loaders: [ { test: /\.js?$/, exclude: node_modules, loader: 'babel', query: { "presets": ["react", "es2015", "stage-0", "react-hmre"] } }, { test: /\.sass$/, loader: 'style!css!sass' }, { test: /\.(png|jpg)$/, loader: 'url?limit=25000' } ], noParse: [pathToReact] //每当 Webpack 尝试去解析那个压缩后的文件,我们阻止它,因为这不必要。 }, plugins: [ new webpack.HotModuleReplacementPlugin(), new webpack.NoErrorsPlugin(), new ExtractTextPlugin("css/[name].css"), //单独使用style标签加载css并设置其路径 new HtmlWebpackPlugin({ //根据模板插入css/js等生成最终HTML favicon:'./src/img/favicon.ico', //favicon路径 filename:'/view/index.html', //生成的html存放路径,相对于 path template:'./app/index.html', //html模板路径 inject: 'body', //允许插件修改哪些内容,包括head与body,或者true hash:true, //为静态资源生成hash值 minify:{ //压缩HTML文件 removeComments:true, //移除HTML中的注释 collapseWhitespace:false //删除空白符与换行符 } }) ] };
1.entry参数定义了打包后的入口文件,数组中的所有文件会按顺序打包。每个文件进行依赖的递归查找,直到所有相关模块都被打包。
如有多个需要打包,写法如下:
entry: { login: './js/login', regist: './js/regist' }
2.output参数定义了输出文件的位置,其中常用的参数包括:
path: 打包文件存放的绝对路径
publicPath: 网站运行时的访问路径
filename: 打包后的文件名