1. 程式人生 > >手撕vue-cli配置——webpack.prod.conf.js篇

手撕vue-cli配置——webpack.prod.conf.js篇

'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
//資源拷貝的外掛
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin 
= require('html-webpack-plugin') //把css打包成css檔案已link的方式引入的包 const ExtractTextPlugin = require('extract-text-webpack-plugin') //壓縮css的包 const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') //壓縮js程式碼的包 const UglifyJsPlugin = require('uglifyjs-webpack-plugin') const env = require('../config/prod.env') const webpackConfig
= merge(baseWebpackConfig, { module: { //loader配置,可在介紹utils的文章中檢視 rules: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true, usePostCSS: true }) }, devtool: config.build.productionSourceMap ? config.build.devtool : false, output: { path: config.build.assetsRoot, filename: utils.assetsPath(
'js/[name].[chunkhash].js'), //chunkFilename用於命名那些非同步載入的模組,比如通過require.ensure() chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') }, plugins: [ // http://vuejs.github.io/vue-loader/en/workflow/production.html //設定全域性變數 new webpack.DefinePlugin({ 'process.env': env }), //壓縮js程式碼 new UglifyJsPlugin({ uglifyOptions: { compress: { warnings: false } }, sourceMap: config.build.productionSourceMap, parallel: true }), // 從所有額外的 chunk(additional chunk) 提取(預設情況下,它僅從初Zchunk(initial chunk) 中提取)當使用 CommonsChunkPlugin 並且在公共 chunk 中有提取的 chunk(來自ExtractTextPlugin.extract)時,allChunks **必須設定為 true new ExtractTextPlugin({ filename: utils.assetsPath('css/[name].[contenthash].css'), allChunks: true, }), // 壓縮css new OptimizeCSSPlugin({ cssProcessorOptions: config.build.productionSourceMap ? { safe: true, map: { inline: false } } : { safe: true } }), // 在dist目錄生成html檔案 new HtmlWebpackPlugin({ filename: config.build.index, template: 'index.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true }, chunksSortMode: 'dependency' }), // 該外掛會根據模組的相對路徑生成一個四位數的hash作為模組id, 建議用於生產環境 new webpack.HashedModuleIdsPlugin(), // 去 webpack 打包時的一個取捨是將 bundle 中各個模組單獨打包成閉包。這些打包函式使你的 JavaScript 在瀏覽器中處理的更慢。相比之下,一些工具像 Closure Compiler 和 RollupJS 可以提升(hoist)或者預編譯所有模組到一個閉包中,提升你的程式碼在瀏覽器中的執行速度。 new webpack.optimize.ModuleConcatenationPlugin(), // 將第三方的包分離出來 new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', minChunks (module) { // any required modules inside node_modules are extracted to vendor return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf( path.join(__dirname, '../node_modules') ) === 0 ) } }), // 為了避免每次更改專案程式碼時導致venderchunk的chunkHash改變,我們還會單獨生成一個manifestchunk new webpack.optimize.CommonsChunkPlugin({ name: 'manifest', minChunks: Infinity }), //我們主要邏輯的js檔案 new webpack.optimize.CommonsChunkPlugin({ name: 'app', async: 'vendor-async', children: true, minChunks: 3 }), // 拷貝資源 new CopyWebpackPlugin([ { from: path.resolve(__dirname, '../static'), to: config.build.assetsSubDirectory, ignore: ['.*'] } ]) ] }) module.exports = webpackConfig

相關推薦

vue-cli配置——webpack.prod.conf.js

'use strict' const path = require('path') const utils = require('./utils') const webpack = require('webpack') const config = require('../config') const me

vue-cli配置——webpack.dev.conf.js

const utils = require('./utils') const webpack = require('webpack') const config = require('../config') const merge = require('webpack-merge') const path

vue-cli配置——webpack.base.conf.js

在開始寫webpack.base.conf.js(簡稱base)之前,我們先來看一下vue-loader.conf.js這個檔案,畢竟在base中我們還會用到: 'use strict' //引入前一篇文章的utils檔案 const utils = require('./utils') //引入conf

vue-cli配置檔案——check-versions.js

check-versions.js,vue-cli中檢查版本的js檔案。 'use strict' const chalk = require('chalk') const semver = require('semver') const packageConfig = require('../packag

vue-cli 專案 webpack.prod.conf.js 檔案程式碼註釋

// 生產模式配置檔案 webpack.prod.conf.js // 註釋參考 https://www.cnblogs.com/ye-hcj/p/7082620.html 和 https://yq.aliyun.com/articles/609824 和 https:/

vue-cli配置文件——check-versions.js

pac 更多 分代 常用 改變 engines shell. 檢測 emp check-versions.js,vue-cli中檢查版本的js文件。 ‘use strict‘ const chalk = require(‘chalk‘) const semver = re

vue-cli配置——utils.js

utils.js檔案主要是用來處理各種css loader的,比如css-loader,less-loader等。 //引入path模組 const path = require('path') //引入之前的config模組 const config = require('../config') //

vue-cli配置檔案——config

最近一直在研究webpack,突然想看看vue-cli中的webpack是如何配置,查閱了很多相關的文章,所以也想出幾篇關於vue-cli配置的東西。正所謂“工欲善其事必先利其器”嘛!這一篇主要是分析vue中關於config資料夾中的相關程式碼; 首先我們先看一下config的檔案結構: |-config

vue-cli 專案 webpack.base.conf.js 檔案程式碼註釋

'use strict' // 基礎配置檔案 webpack.base.conf.js // 註釋參考 https://www.cnblogs.com/ye-hcj/p/7082620.html 和 https://yq.aliyun.com/articles/60982

vue-cli腳手架build目錄中的webpack.prod.conf.js配置文件

htm uglifyjs hunk ubd ever color ssp IT config // 下面是引入nodejs的路徑模塊 var path = require(‘path‘) // 下面是utils工具配置文件,主要用來處理css類文件的loader var

底層:vue-cli腳手架build目錄中的webpack.prod.conf.js配置檔案

首先宣告:這篇文章摘錄自別人的文件,直接複製過來的,方便於以後自己檢視,如有侵權,請諒解// 下面是引入nodejs的路徑模組var path = require('path')// 下面是utils工具配置檔案,主要用來處理css類檔案的loadervar utils =

vue-cli腳手架npm相關文件說明-2、webpack.prod.conf.js

base upd esp dev 如何 resolve 壓縮 ont 緩存 下面介紹webpack.prod.conf.js中相關配置代碼和配置的說明,建議先查閱build/webpack.prod.conf.js /* * Webpack 生產環境配置文件,用於生

vue-cli腳手架之開發環境的webpack配置——webpack.base.conf.js

webpack相關的重要配置檔案將在這一節給出。webpack水很深,在此先弄清楚原配檔案內容的含義,後續可以自己根據實際情況配置。 webpack.base.conf.js:配置vue開發環境的webpack配置,處理各種檔案(js、css、vue、圖片、視訊…) // An

vue-cli腳手架之webpack.prod.conf.js

// An highlighted block 'use strict'//js嚴格模式執行 const path = require('path')//這個模組是釋出到NPM註冊中心的NodeJS“路徑”模組的精確副本 const utils = requir

vue2.0配置webpack.dev.conf.js加載本地json數據

AR route find 數據 port 本地 use ack data 打開webpack.dev.conf.js 在const portfinder = require(‘portfinder‘)後加入以下配置 1 const express = require(‘

vue-cli搭建項目模擬後臺接口數據,webpack-dev-conf.js文件配置

server 模擬 style routes webpack 是你 api 第一步 js文件 首先第一步 const express = require(‘express‘) const app = express() var appData = require(‘../

vue-cli搭建專案模擬後臺介面資料,webpack-dev-conf.js檔案配置

注:本篇寫於2018-12,基於vue2.xxx   (一)路徑:bulid / webpack.dev.conf.js  1、在webpack.dev.conf.js 裡面找到 const portfinder = require(‘portfinder’),然後在下面寫上以下程式

vue-cli 利用 webpack 給生產環境和發布環境配置不同的接口地址的三種方法

方法 -1016 開發環境 class 們的 pack json config proc 第一種方法: 在/config/dev.env.js下配置如下 在/config/prod.env.js下配置如下 已經分別設定路徑,接下來就是如何調用的問題了。 原來api文件

vue模擬後臺數據,請求本地數據的配置(舊版本dev-server.js,新版本webpack.dev.conf.js

ges 根目錄 ddl json nbsp vue-cli 數據訪問 接口 logs 最近學習一個vue-cli的項目,需要與後臺進行數據交互,這裏使用本地json數據來模仿後臺數據交互流程。然而發現build文件夾下沒有dev-server.js文件了,因為新版本的vue

vue-cli腳手架之webpack.dev.conf.js

webpack.dev.conf.js 開發環境模式配置檔案: // An highlighted block 'use strict'//js按照嚴格模式執行 const utils = require('./utils')//匯入utils.js const webpack = re