本篇文章基於分支step2,切換分支:git checkout step2javascript
分了三個級別,preloaders,loaders,postloaders,分別表明前中後,三個處理狀態。java
// login.es6 let login = (username, password) => { if(username !== 'admin' || password !== '123') { console.log('incorrect login'); } else { console.log('correct login'); } }; login('admin', '123');
須要使用es6,因爲瀏覽器支持不夠,咱們必須使用babel轉爲es5的code。node
npm install babel-core babel-loader babel-preset-es2015
{ "presets": ["es2015"] }
module: { loaders: [ { test: /\.es6$/, exclude: /node_modules/, loader: 'babel-loader' } ] }, resolve: { extensions: ['', '.js', '.es6'] }
運行dev-server,看到文件成功執行,這時咱們看到bundle.js中編譯後的code爲:webpack
var login = function login(username, password) { if (username !== 'admin' || password !== '123') {} }; login('admin', '456');
咱們習慣在項目中使用的是eslint,或者jslint也能夠,看我的愛好。git
npm install eslint eslint-loader eslint-plugin-promise eslint-plugin-standard babel-eslint -D
preLoaders: [ { test: /\.js$/, exclude: 'node_modules', loader: 'eslint-loader' } ]
從新啓動,若是code中存在不符合規範的,webpack在編譯時候就會出錯,根據提示更改對應文件。es6
我不能一直使用這麼複雜的命令去啓動,so 咱們能夠在package.json中配置一下scripts:github
"scripts": { "start": "webpack-dev-server", }
這樣咱們每次啓動只須要執行 npm start 便可。web
在此說明兩點:npm
一、 npm的start是一個特殊的腳本名稱,在命令行中使用npm start就能夠執行相關命令,若是對應的此腳本名稱不是start,想要在命令行中運行時,須要這樣用npm run {script name},如npm run dev.json
二、 window環境下不支持&鏈接命令執行,如:gulp & nodemon mock-server.js。
生產環境咱們須要對js進行打包壓縮,而dev環境咱們但願使用源碼便於調試。
// 生產環境 webpack -d // 開發環境 webpack -p
分別執行這兩個命令,你能夠看到bundle.js內容是不相同的,一個壓縮一個未經壓縮。
var devConfig = require('./webpack.config'); module.exports = devConfig;
一般在開發環境咱們會常常使用console.log,debug來進行代碼調試,這些實際上是不容許帶入生產環境的。
儘管採用一系列限制,可是爲了防患於未然,咱們引入strip-loader包:
npm install strip-loader -D
var WebpackStrip = require('strip-loader'); var devConfig = require('./webpack.config'); var stripLoader = { test: [/\.js$/, /\.es6$/], exclude: /node_modules/, loader: WebpackStrip.loader('console.log', 'debug') }; devConfig.module.loaders.push(stripLoader); module.exports = devConfig;
webpack --config webpack-build.config.js -p
這個命令執行完以後,bundle.js就按照build中的的配置對代碼進行了一系列合做。
說明: webpack --config 用於設置使用哪一個配置文件作操做。
npm install http-server -g
http-server
打開瀏覽器訪問http://127.0.0.1:8080/,此時打開 console,發現並無任何東西輸出,這就是strip-loader的做用。再查看sources中的bundle.js爲壓縮後的文件。