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參數定義了打包後的入口文件,數組中的全部文件會按順序打包。每一個文件進行依賴的遞歸查找,直到全部相關模塊都被打包。css
若有多個須要打包,寫法以下:html
entry: { login: './js/login', regist: './js/regist' }
2.output參數定義了輸出文件的位置,其中經常使用的參數包括:node
path: 打包文件存放的絕對路徑
publicPath: 網站運行時的訪問路徑
filename: 打包後的文件名react