webpack初步搭建Vue專案
阿新 • • 發佈:2018-11-19
對檔案進行打包
1. cnpm i -D webpack webpack-cli
本地熱更新
1. cnpm i -D webpack-dev-server
處理圖片資源
url-loader依賴file-loader
1. cnpm i -D url-loader file-loader
處理css檔案
1. cnpm i -D css-loader style-loader
css前處理器
1. cnpm i -D stylus stylus-loader
2. cnpm i -D postcss-loader
前處理器工具
1. cnpm i -D autoprefixer
處理html檔案
1. cnpm i -D html-webpack-plugin
處理js檔案
相容es6寫法
1. cnpm i -D babel-core babel-preset-env babel-loader
處理vue檔案
1. cnpm i -D vue vue-loader vue-style-loader vue-template-loader
處理vue中使用jsx檔案
If using Babel 7, use 4.x If using Babel 6, use 3.x cnpm i -D babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props babel-preset-env
處理package.json跨平臺傳變數問題
cnpm i -D cross-env
webpack配置
const path = require('path') const VueLoaderPlugin = require('vue-loader/lib/plugin') const HTMLPlugin = require('html-webpack-plugin') const webpack = require('webpack') const isDev = process.env.NODE_ENV === 'development'; module.exports = { target:"web", mode:isDev ? 'development' : 'production', devtool:"#cheap-module-eval-source-map", devServer:isDev === 'development' ? { port:8080, contentBase:path.join(__dirname,'dist'), host:'0.0.0.0', overlay:{ errors:true }, hot:true } : {}, entry:path.join(__dirname,'src/index.js'), output:{ filename:'bundle.js', path:path.join(__dirname,'dist') }, module:{ rules:[ { test:/\.vue$/, use:{ loader:'vue-loader' } }, { test:/\.jsx$/, use:{ loader:'babel-loader' } }, { test:/\.css$/, use:[ 'style-loader', 'vue-style-loader', 'css-loader' ] }, { test:/\.styl/, use:[ 'style-loader', 'css-loader', 'postcss-loader', 'stylus-loader' ] }, { test:/\.(gif|jpg|jpeg|png|svg)/, use:{ loader:'url-loader', options:{ limit:1024, name:'[name].[ext]' } } } ] }, plugins: [ new VueLoaderPlugin(), new HTMLPlugin({ filename:'index.html', template:'index.html' }), new webpack.NamedModulesPlugin(), new webpack.HotModuleReplacementPlugin() ] }
單獨配置jsx,postcss
//.babelrc
{
"presets":[
"env"
],
"plugins":[
"transform-vue-jsx"
]
}
//postcss.config.js
const autoprefixer = require('autoprefixer')
module.exports = {
plugins:[
autoprefixer()
]
}