Webpack是一款模塊加載器兼打包工具,它能把各類資源,例如JS(含JSX javascript xml)、coffee、樣式(含less/sass/css)、圖片等都做爲模塊來使用和處理。咱們能夠直接使用 require(XXX) 的形式來引入各模塊,即便它們可能須要通過編譯(好比JSX和sass),但咱們無須在上面花費太多心思,由於 webpack 有着各類健全的加載器(loader)在默默處理這些事情。javascript
1. 安裝 css
cnpm i webpack -g 全局安裝html
cnpm i webpack -D 局部安裝java
如下爲webpack@3.8.1node
在項目文件夾下執行npm init,進行初始化,獲得package.json文件webpack
安裝過程當中-D表示開發依賴 devDependencies,-S表示生產依賴或項目依賴 dependencieses6
2. webpack初步 web
新建entry.js文件,這個文件爲入口文件,在這個文件中能夠引入require()多個模塊文件。npm
命令執行 webpack entry.js bundle.js 進行打包,打包後全部模塊文件將在bundle.js文件中顯示json
html文件能夠直接script引入bundle.js
3. 引入樣式文件
在入口文件中不能直接引入css文件,由於不是一個模塊,一個js文件爲一個模塊。若是加載css文件須要藉助加載器loader
安裝 npm i style-loader css-loader -D
文件引入 require("style-loader!css-loader!./index.css")
style-loader 表明把css樣式代碼轉爲js字符串的node樣式代碼
css-loader 轉譯css爲commonJS模塊 方便導入
./index.css 爲css文件名
若是說要引入sass文件或者less文件,也須要下載對應的loader
安裝 cnpm i sass-loader node-sass less-loader less -D
此處版本爲sass-loader@7
文件引入require("style-loader!css-loader!sass-loader!./main.scss")
4. 關於webpack.config.js配置文件
1 module.exports = { 2 entry:'./entry.js', //入口文件 3 output:{ //打包的出口文件 4 path:__dirname,//根路徑 5 filename:"bundle.js",//打包文件 6 }, 7 module:{ //須要打包的模塊(js css less sass png ...) 8 loaders:[ 9 { 10 test:/\.css$/, //css文件名 11 use:["style-loader","css-loader"] 12 }, 13 { 14 test:/\.less$/, 15 use:["style-loader","css-loader","less-loader"] 16 }, 17 { 18 test:/\.scss$/, 19 use:["style-loader","css-loader","sass-loader"] 20 }, 21 ] 22 } 23 }
以上配置文件書寫完成之後,直接命令執行webpack,自動打包;樣式文件引入直接寫目錄下的文件名便可。
5. 關於調試
全部文件都在entry.js中,爲了便於調試(未打包以前目錄)
安裝 npm i source-map -D
執行 webpack --devtool source-map
爲了方便啓動,能夠直接在配置文件寫入如下內容,命令輸入webpack自動執行
devtool:"source-map"
6. ES6轉ES5
在服務端ES6須要轉成ES5,babel.js文件將會把es6轉爲es5。
咱們在進行接口暴露的時候
ES5接口暴露
單一接口暴露 module.exports = user 引入 var user = require('./user.js')
一個模塊暴露多個接口 exports.msg = '字符串' exports.arr = [1,2] 引入 var { msg,arr } = require('./many.js')
ES6接口暴露
單一默認暴露 export default likes 引入 import love from "./f.js"
一個模塊暴露多個 export const a = 'aaa' export let b = 'bbb' 引入 import {a,b} from "./m.js"
安裝 npm i babel-loader babel-core babel-preset-env -D
babel-loader babel-core版本不能相差2以上
配置文件寫入
新建 .babelrc 文件寫入
7. 啓動服務插件
自動刷新,修改後無需從新打包
全局安裝 npm i webpack-dev-server@2.9.3 -g
局部安裝 npm i webpack-dev-server@2.9.3 -D
執行 webpack-dev-server --inline --hot
爲了方便啓動,能夠在package.json文件寫入,命令執行 npm start 便可啓動