以前寫過一次關於webpack配置多頁面應用,寫的不是很好,此次項目要用到多頁面應用,因而從新基於webpack4構建了一套關於vue的多頁面應用。我在網上搜索了一圈,發現vue多頁面配置,大部分都是基於vue-cli配置的,不多是從基礎開始配置,如是我經過webpack4,構建了一個提供多頁面入口,打包,調試的 輕量級的構建工具, 不依賴過多配置,只加載經常使用的配置,用更少的代碼,作更多的東西
├── build // webpack配置目錄 │ ├── webpack.config.base.js // 公共配置 │ ├── webpak.config.dev.js // 開發模式 │ ├── webpak.config.prod.js // 打包模式 ├── dist // 項目打包路徑(自動生成) ├── page // 多頁面入口(自定義) ├── public // index.html模板 ├── src // 源碼目錄(自定義) ├── postcss.config // 樣式添加前綴 ├── pages.js // 多頁面配置項
克隆項目 git clone git@github.com:hangjob/vue-multiple-webpack4-template.git
安裝依賴 npm install 或 yarn
開發模式 npm run dev 裏面已經寫好了兩個入口文件,啓動後可直接訪問 http://localhost:3000/home.html http://localhost:3000/login.html
打包模式 npm run build 打包後生成文件dist目錄
關於build中使用的插件項在文件配置後面註釋寫的都很清楚css
多頁面配置項(pages.js)html
pages: [ { page: 'home', entry: path.resolve(__dirname, './page/home.js'), //指向入口文件 title: '這是頁面1', template: path.resolve(__dirname, './public/index.html'), //指向模板文件 filename: 'home.html', chunks: ['home','common'], // 引入公共模塊common }, { page: 'login', entry: path.resolve(__dirname, './page/login.js'), //指向入口文件 title: '這是頁面2', template: path.resolve(__dirname, './public/index.html'), //指向模板文件 filename: 'login.html', chunks: ['login'], } ]
webpack.config.dev.js 開發模式vue
mode: 'development', devtool: 'cheap-module-eval-source-map',// 原始代碼(只有行內),可是更高的質量和更低的性能 watch: true, watchOptions: { poll: 1000, //每秒監控訊問次數 aggregateTimeout: 500, //防抖 ignored: '/node_modules/' //忽略監控文件 }, devServer:{ port: 3000, hot: true, progress: false, //記錄條 contentBase: path.resolve(__dirname, '../public'), //表示的是告訴服務器從哪裏提供內容 compress: true //開啓gzip壓縮 }
webpack.config.prod.js 生產模式node
ode: 'production', devtool: 'cheap-module-source-map',// 原始代碼(只有行內)每行代碼從loader中進行映射 plugins: [ new CleanWebpackPlugin(['dist'], { root: path.resolve(__dirname, '..'), dry: false // 啓用刪除文件 }) ], optimization: { minimizer: [ new UglifyJsPlugin({ cache: true, parallel: true, //啓用緩存而且啓用多進程並行運行 sourceMap: true //錯誤消息位置映射(減慢編譯速度),線上錯誤方便查看 }), new OptimizeCSSAssetsPlugin({}) ] }
webpack.config.base.js 公共模塊webpack
optimization: { splitChunks: { cacheGroups: { // 將 `node_modules`目錄下被打包的代碼到`common/common.js` common: { test: /node_modules/, chunks: "initial", //只對入口文件處理 name: "common", //配置公共模塊名稱 minChunks: 2, //表示被引用次數,默認爲1,好比在項目中有2處引用到同樣的模塊就會抽離到公共模塊下 maxInitialRequests: 5, // 最大的初始化加載次數,默認爲1 minSize: 0 //表示在壓縮前的最小模塊大小,默認爲0 } } } }
1.臨時使用git
npm --registry https://registry.npm.taobao.org install express
2.持久使用github
npm config set registry https://registry.npm.taobao.org
npm config get registry 或者 npm info express
3.經過cnpm使用web
npm install -g cnpm --registry=https://registry.npm.taobao.org
github地址,後面會持續更新,若是對您有幫助,您能夠點右上角 "Star" 支持一下 謝謝! ^_^
如要在編譯過程當中遇到錯誤,點擊 聯繫做者
項目有使用到這些文章的我都註釋過
webpack中的path、publicPath和contentBase
mini-css-extract-plugin
webpack4 splitChunksPlugin && runtimeChunkPlugin 配置雜記
Vue Loadervue-cli