1.全局安裝webpack npm install -g webpack
2.初始化項目目錄 npm init //能夠一路回車
3.在當前項目安裝webpack cnpm i webpack
4.安裝webpack-cli cnpm i webpack-cli -D
,-D在開發環境中局部安裝css
webpack --mode development
mkdir/md src //刪除文件是rd/s/q type nul> src/index.js //建立入口文件index.js
src/index.js建立完以後,運行webpack --mode development/production
會自動將src/index.js文件打包到dist/main.js文件(自動生成dist和main.js)
而後,創建html,引用dist/main.js文件便可html
--watch 實時刷新 文件修改後自動打包
可是它不能實時刷新瀏覽器,若是須要則安裝webpack-dev-server,它的做用是修改後發佈到服務器上
--progress 查看進度
--display-modules 顯示隱藏的模塊
--colors 彩色顯示
--display-reasons 顯示打包緣由node
webpack --mode development --watch --progress --display-modules --colors --display-reasons
cnpm i -g webpack-dev-server
npm install webpack-dev-server --save-dev
webpack-dev-server --mode development --output-public-path dist
,指定publicPath,dist是index.html文件所引用js的地址目錄.(注意,這裏是將文件打包保存在內存中,沒有寫入磁盤)webpack-dev-server --port 3000
,能夠直接在webpack.config.js配置文件中配置devServer屬性,開啓熱更新和portlocalhost:8080
,顯示的是根目錄的index.html文件,能夠修改index.js能夠看到頁面在實時自動刷新。若是根目錄沒有index.html,那麼將會列出根目錄全部文件夾,且頁面就不能實時刷新了。css-loader 處理css文件
style-loader 將css-loader處理以後的文件做爲標籤<style>
插入html
處理css文件的兩種方式:webpack
require('style-loader!css-loader!./index.css')
,這裏的index.css和index.js同級webpack --mode development --module-bind "css=style-loader!css-loader"
cnpm i css-loader style-loader --save-dev
建立對象進行配置es6
moudule.exports={ //entry... }
字符串:單輸入
數組,多輸入,打包到一塊
對象表示(hash),多頁面入口web
entry : {//入口 html_1:'./src/html_1/index.js',/*第一個頁面入口*/ html_2:['./src/html_2/index.js','./src/html_2/index2.js'],/*第二個頁面入口*/ app:'./src/app.js',/*應用入口*/ vendors:'./src/vendors.js',/*第三方入口*/ }
單入口,單出口,固定 output:{filename:'index.js',path:'/dist/js'}
多入口,多出口,name或者hash(MD5或者版本號,惟一性)
publicPath 佔位符,上線的時候設置服務器地址npm
output:{ filename:'[name].js',/*文件名,或者filename:'[name]-[hash].js'*/ path:__dirname + '/dist/js'/*文件路徑*/, publicPath:"" }
若是是node方式,輸出路徑以下json
const path = require("path") output:{path:path.resolve(__dirname,"./dist/js/bundle.js")}; //path.resolve()方法解析了當前路徑,將相對路徑改成絕對路徑
引用前安裝 npm install html-webpack-plugin --save-dev
配置引用 var htmlWebpackPlugin = require('html-webpack-plugin');
數組
plugins:[ new webpack.optimize.UglifyJsPlugin(), new HtmlWebpackPlugin({template: './src/index.html'}) ]
兩個目標:瀏覽器
全部loader都有exclude和include屬性,設置不打包和打包範圍
module:{ rules:[ { test:/\.js$/, exclude:/node_modules/,//exclude設置那些不須要用babel-lader,include表示須要用 loader:"babel-loader" } ] }
query:{presets:['latest']}
{"presets":["env"]}
"babel":{"presets":["latest"]}
cnpm i babel-loader
cnpm install -g babel-cli
cnpm i babel-preset-env --save-dev
babel es6.js --presets es2015
{"presets":["env"]}
或者"babel": {"presets": ["es2015"]}
//webpack --config 文件名 webpack --config webpack.config2.js
在package.json中設置,package.json中要用雙引號,要不要是編譯器報錯
"scripts": { "webpack":"webpack --mode development --config webpack.config.js --progress --display-modules --colors --display-reason", "server":"webpack-dev-server --mode development --output-public-path dist" },
而後命令行敲cnpm run server