webpack.config.js文件通常放在項目的根目錄中,它本身也是一個標準的Commonjs規范的模塊。
var webpack = require('webpack');module.exports = { entry: [ 'webpack/hot/only-dev-server', './js/app.js' ], output: { path: './build', filename: 'bundle.js' }, module: { loaders: [ { test: //.js?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/ }, { test: //.js$/, exclude: /node_modules/, loader: 'babel-loader'}, { test: //.css$/, loader: "style!css" }, {test: //.less/,loader: 'style-loader!css-loader!less-loader'} ] }, resolve:{ extensions:['','.js','.json'] }, plugins: [ new webpack.NoErrorsPlugin() ]};1.entry
entry可以是個字符串或數組或者是對象。
當entry是個字符串的時候,用來定義入口文件:
entry: './js/main.js'
當entry是個數組的時候,里面同樣包含入口js文件,另外一個參數可以是用來配置webpack提供的一個靜態資源服務器,webpack-dev-server。webpack-dev-server會監控項目中每一個文件的變化,實時的進行構建,并且自動刷新頁面:
entry: [ 'webpack/hot/only-dev-server', './js/app.js'
當entry是個對象的時候,我們可以將不同的文件構建成不同的文件,按需使用,比如在我的hello頁面中只要/引入hello.js即可:
entry: { hello: './js/hello.js', form: './js/form.js' }2.output
output參數是個對象,用于定義構建后的文件的輸出。其中包含path和filename:
output: { path: './build', filename: 'bundle.js' }當我們在entry中定義構建多個文件時,filename可以對應的更改為[name].js用于定義不同文件構建后的名字。
3.module
關于模塊的加載相關,我們就定義在module.loaders中。這里通過正則表達式去匹配不同后綴的文件名,然后給它們定義不同的加載器。比如說給less文件定義串聯的三個加載器(!用來定義級聯關系):
module: { loaders: [ { test: //.js?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/ }, { test: //.js$/, exclude: /node_modules/, loader: 'babel-loader'}, { test: //.css$/, loader: "style!css" }, { test: //.less/, loader: 'style-loader!css-loader!less-loader'} ]}此外,還可以添加用來定義png、jpg這樣的圖片資源在小于10k時自動處理為base64圖片的加載器:
{ test: //.(png|jpg)$/,loader: 'url-loader?limit=10000'}給css和less還有圖片添加了loader之后,我們不僅可以像在node中那樣require js文件了,我們還可以require css、less甚至圖片文件:
require('./bootstrap.css'); require('./myapp.less'); var img = document.createElement('img'); img.src = require('./glyph.png');但是需要知道的是,這樣require來的文件會內聯到 js bundle中。如果我們需要把保留require的寫法又想把css文件單獨拿出來,可以使用下面提到的[extract-text-webpack-plugin]插件。
在上面示例代碼中配置的第一個loaders我們可以看到一個叫做react-hot的加載器。我的項目是用來學習react寫相關代碼的,所以配置了一個react-hot加載器,通過它,可以實現對react組件的熱替換。我們已經在entry參數中配置了webpack/hot/only-dev-server,所以我們只要在啟動webpack開發服務器時開啟 主站蜘蛛池模板: 平南县| 岑巩县| 浦城县| 灵川县| 财经| 汉寿县| 墨脱县| 元谋县| 河北省| 信阳市| 苍山县| 惠安县| 合肥市| 南汇区| 秦安县| 新野县| 略阳县| 司法| 郑州市| 汤原县| 洛浦县| 桐柏县| 陵水| 永州市| 华阴市| 托克托县| 永昌县| 贵南县| 双江| 玉门市| 洪雅县| 登封市| 南汇区| 玉树县| 丰城市| 双柏县| 开江县| 吴忠市| 伊宁县| 新化县| 海阳市|