npm install @webpack3.6.0 -g
(全局安裝)npm install @webpack3.6.0 --save-dev
(局部安裝)webpack src/main.js dist/bundle.js
<script src='./dist/bundle.js'></script>
建立一個webpack.config.js文件 const path =require('path'); module.export = { //入口:能夠是字符串/數組/對象,這裏咱們入口只有一個,因此寫一個字符串便可 entry:'./src/main.js' //出口:一般是一個對象,裏面至少包含兩個重要屬性,path和filename output:{ path:path.resolve(__dirname,'dist')//注意:path一般是一個絕對路徑 filename:'bundle.js' } }
"script":{ "build":"webpack" } //如何執行build命令 npm run build
npm install style-loader --save-dev
--save-dev表示開發時依賴,只在開發時依賴他,若是是下載vue的時候就不須要,由於vue在運行的時候也須要const path = require('path') module.exports = { entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', publicPath:"dist/" //加上這個屬性,只要涉及url的東西,都會自動在前面拼接上dist/ }, module:{ rules:[ test: /\.css$/, // 使用多個loader時, 是從右向左 use: [ 'style-loader', 'css-loader' ] ] } }
npm install less-loader less --save-dev
咱們不只安裝了loader還安裝了less,由於webpack使用less對less文件進行編譯最後在webpack.config.js中的rules內添加對象選項,用於處理less文件 { test: /\.less$/, use: [{ loader: "style-loader" // creates style nodes from JS strings }, { loader: "css-loader" // translates CSS into CommonJS }, { loader: "less-loader" // compiles Less to CSS }] }
{ loader: 'url-loader', options: { // 當加載的圖片,小於limit(8kb)時,會將圖片編譯成base64字符串形式 // 當加載的圖片,大於limit時,須要使用安裝file-loader模塊進行加載 limit: 8192, name:'img/[name].[hash:8].[ext]' }, }
爲了處理打包後的圖片,咱們在options中添加以下選項 1.img:文件要打包到的文件夾 2.name:獲取圖片原來的名字,放在該位置 3.hash:8 :爲了防止圖片名稱衝突,依然使用hash,可是咱們保留8位 4.ext:使用原來的拓展名 5.eg:`name:'img/[name].[hash:8].[ext]'`
output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', publicPath:"dist/" //加上這個屬性,只要涉及url的東西,都會自動在前面拼接上dist/ },
npm install vue --save
解決錯誤,在webpack中修改配置: resolve:{ alias:{ 'vue$':'vue/dist/vue.esm.js' } }
el:'#app'
下定義tamplate屬性,在el中定義tamplate,tamplate模板內容會頂替掉掛載的el模板<template> <div> <h3>我是cpn組件</h3> <h3>{{ name }}</h3> </div> </template> <script > export default { name: "Cpn", data() { return { name:'conaaa' } }, } </script> <style scoped> </style>
npm install vue-loader vue-template-compiler --save-dev
修改webpack.config.js文件 { test:/\.vue$/, use:['vue-loader'] }
const HtmlWebpackPlugin=require('html-webpack-plugin')
)npm install html-webpack-plugin --save-dev
配置時咱們應該先刪除以前在output中添加的publicPath屬性,不然插入的script標籤中的src會出錯 plugins:[ new HtmlWebpackPlugin({ template:'index.html' }), ]
new uglifyjsWebpackPlugin()
npm install --save-dev webpack-dev-server@2.9.1
在webpack.config.js中的文件配置 devServer:{ contentBase:'./dist', inline:true, }
在package.json文件中設置npm命令 "scripts": { "dev":"webpack-dev-server --open" } --open:直接打開瀏覽器(能夠不加)
舉例: const uglifyjsWebpackPlugin=require('uglifyjs-webpack-plugin') const webpackMerge=require('webpack-merge') const baseconfig=require('./base.config') module.exports = webpackMerge(baseconfig,{ plugins:[ new uglifyjsWebpackPlugin() ], })
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --config ./build/prod.config.js", "dev": "webpack-dev-server --config ./build/dev.config.js" }