vue.config.js 配置 vue項(xiàng)目打包配置

vue-cli3 腳手架搭建完成后,項(xiàng)目目錄中沒有 vue.config.js 文件泛鸟,需要手動(dòng)創(chuàng)建

創(chuàng)建vue.config.js

vue.config.js?是一個(gè)可選的配置文件术瓮,如果項(xiàng)目的 (和?package.json?同級(jí)的) 根目錄中存在這個(gè)文件康聂,那么它會(huì)被?@vue/cli-service?自動(dòng)加載。你也可以使用?package.json?中的?vue?字段胞四,但是注意這種寫法需要你嚴(yán)格遵照 JSON 的格式來寫恬汁。

在根目錄中創(chuàng)建vue.config.js

vue.config.js配置

這個(gè)文件應(yīng)該導(dǎo)出一個(gè)包含了選項(xiàng)的對(duì)象:

配置選項(xiàng)

publicPath?

Type:?string

Default:?'/'

?部署應(yīng)用包時(shí)的基本 URL,

用法和 webpack 本身的?output.publicPath?一致辜伟。

這個(gè)值也可以被設(shè)置為空字符串 ('') 或是相對(duì)路徑 ('./')氓侧,這樣所有的資源都會(huì)被鏈接為相對(duì)路徑脊另,這樣打出來的包可以被部署在任意路徑。

把開發(fā)服務(wù)器架設(shè)在根路徑约巷,可以使用一個(gè)條件式的值:

outputDir

Type:?string

Default:?'dist'

輸出文件目錄偎痛,當(dāng)運(yùn)行?vue-cli-service build?時(shí)生成的生產(chǎn)環(huán)境構(gòu)建文件的目錄。注意目標(biāo)目錄在構(gòu)建之前會(huì)被清除 (構(gòu)建時(shí)傳入?--no-clean?可關(guān)閉該行為)独郎。

assetsDir

Type:?string

Default:?''

放置生成的靜態(tài)資源 (js踩麦、css、img氓癌、fonts) 的目錄谓谦。

注:從生成的資源覆寫 filename 或 chunkFilename 時(shí),assetsDir?會(huì)被忽略贪婉。

indexPath

Type:?string

Default:?'index.html'

指定生成的?index.html?的輸出路徑 (相對(duì)于?outputDir)反粥。也可以是一個(gè)絕對(duì)路徑。

filenameHashing

Type:?boolean

Default:?true

默認(rèn)情況下谓松,生成的靜態(tài)資源在它們的文件名中包含了 hash 以便更好的控制緩存星压。然而,這也要求 index 的 HTML 是被 Vue CLI 自動(dòng)生成的鬼譬。如果你無法使用 Vue CLI 生成的 index HTML娜膘,你可以通過將這個(gè)選項(xiàng)設(shè)為?false?來關(guān)閉文件名哈希。

pages

Type:?Object

Default:?undefined

在 multi-page(多頁)模式下構(gòu)建應(yīng)用优质。每個(gè)“page”應(yīng)該有一個(gè)對(duì)應(yīng)的 JavaScript 入口文件竣贪。

其值應(yīng)該是一個(gè)對(duì)象,對(duì)象的 key 是入口的名字巩螃,value 是:

一個(gè)指定了?entry,?template,?filename,?title?和?chunks?的對(duì)象 (除了?entry?之外都是可選的)演怎;

或一個(gè)指定其?entry?的字符串。

注:當(dāng)在 多頁應(yīng)用 模式下構(gòu)建時(shí)避乏,webpack 配置會(huì)包含不一樣的插件 (這時(shí)會(huì)存在多個(gè)?html-webpack-plugin?和?preload-webpack-plugin?的實(shí)例)爷耀。如果你試圖修改這些插件的選項(xiàng),請(qǐng)確認(rèn)運(yùn)行?vue inspect拍皮。

lintOnSave

Type:?boolean?|?'error'

Default:?true

是否在保存的時(shí)候使用 `eslint-loader` 進(jìn)行檢查歹叮。 有效的值:`ture` | `false` | `"error"`? 當(dāng)設(shè)置為 `"error"` 時(shí),檢查出的錯(cuò)誤會(huì)觸發(fā)編譯失敗铆帽。

runtimeCompiler

Type:?boolean

Default:?false

是否使用包含運(yùn)行時(shí)編譯器的 Vue 構(gòu)建版本咆耿。設(shè)置為?true?后你就可以在 Vue 組件中使用?template?選項(xiàng)了,但是這會(huì)讓你的應(yīng)用額外增加 10kb 左右爹橱。

transpileDependencies

Type:?Array<string | RegExp>

Default:?[]

默認(rèn)情況下?babel-loader?會(huì)忽略所有?node_modules?中的文件萨螺。如果你想要通過 Babel 顯式轉(zhuǎn)譯一個(gè)依賴,可以在這個(gè)選項(xiàng)中列出來。

productionSourceMap

Type:?boolean

Default:?true

如果你不需要生產(chǎn)環(huán)境的 source map慰技,可以將其設(shè)置為?false?以加速生產(chǎn)環(huán)境構(gòu)建椭盏。

crossorigin

Type:?string

Default:?undefined

設(shè)置生成的 HTML 中?<link rel="stylesheet">?和?<script>?標(biāo)簽的?crossorigin?屬性。

integrity

Type:?boolean

Default:?false

在生成的 HTML 中的??和??標(biāo)簽上啟用Subresource Integrity(SRI)惹盼。如果你構(gòu)建后的文件是部署在 CDN 上的庸汗,啟用該選項(xiàng)可以提供額外的安全性惫确。

Webpack相關(guān)配置

configureWebpack

Type:?Object | Function

如果這個(gè)值是一個(gè)對(duì)象手报,則會(huì)通過webpack-merge合并到最終的配置中。

如果這個(gè)值是一個(gè)函數(shù)改化,則會(huì)接收被解析的配置作為參數(shù)掩蛤。該函數(shù)及可以修改配置并不返回任何東西,也可以返回一個(gè)被克隆或合并過的配置版本陈肛。

chainWebpack

Type:?Function

是一個(gè)函數(shù)揍鸟,會(huì)接收一個(gè)基于webpack-chain的?ChainableConfig?實(shí)例。允許對(duì)內(nèi)部的 webpack 配置進(jìn)行更細(xì)粒度的修改句旱。

Css相關(guān)配置

css.modules

Type:?boolean

Default:?false

默認(rèn)情況下阳藻,只有?*.module.[ext]?結(jié)尾的文件才會(huì)被視作 CSS Modules 模塊。設(shè)置為?true?后你就可以去掉文件名中的?.module?并將所有的?*.(css|scss|sass|less|styl(us)?)?文件視為 CSS Modules 模塊谈撒。

css.extract

Type:?boolean | Object

Default: 生產(chǎn)環(huán)境下是?true腥泥,開發(fā)環(huán)境下是?false

是否將組件中的 CSS 提取至一個(gè)獨(dú)立的 CSS 文件中 (而不是動(dòng)態(tài)注入到 JavaScript 中的 inline 代碼)。

css.sourceMap

Type:?boolean

Default:?false

是否為 CSS 開啟 source map啃匿。設(shè)置為?true?之后可能會(huì)影響構(gòu)建的性能蛔外。

css.loaderOptions

Type:?Object

Default:?{}

向 CSS 相關(guān)的 loader 傳遞選項(xiàng)。

支持的 loader 有:

css-loader

postcss-loader

sass-loader

less-loader

stylus-loader

devServer

Type:?Object

所有?webpack-dev-server?的選項(xiàng)都支持溯乒。注意:

有些值像?host夹厌、port?和?https?可能會(huì)被命令行參數(shù)覆寫。

有些值像?publicPath?和?historyApiFallback?不應(yīng)該被修改裆悄,因?yàn)樗鼈冃枰烷_發(fā)服務(wù)器的publicPath同步以保障正常的工作矛纹。

devServer.proxy

Type:?string | Object

如果你的前端應(yīng)用和后端 API 服務(wù)器沒有運(yùn)行在同一個(gè)主機(jī)上,你需要在開發(fā)環(huán)境下將 API 請(qǐng)求代理到 API 服務(wù)器光稼。這個(gè)問題可以通過?vue.config.js?中的?devServer.proxy?選項(xiàng)來配置或南。

parallel

Type:?boolean

Default:?require('os').cpus().length > 1

是否為 Babel 或 TypeScript 使用?thread-loader。該選項(xiàng)在系統(tǒng)的 CPU 有多于一個(gè)內(nèi)核時(shí)自動(dòng)啟用钟哥,僅作用于生產(chǎn)構(gòu)建迎献。

pwa

Type:?Object

PWA 插件傳遞選項(xiàng)。

pluginOptions

Type:?Object

這是一個(gè)不進(jìn)行任何 schema 驗(yàn)證的對(duì)象腻贰,因此它可以用來傳遞任何第三方插件選項(xiàng)吁恍。

// Vue.config.js 配置選項(xiàng)

module.exports = {

? ? // 選項(xiàng)

? ? //? 基本路徑

? ? publicPath: "./",

? ? //? 構(gòu)建時(shí)的輸出目錄

? ? outputDir: "dist",

? ? //? 放置靜態(tài)資源的目錄

? ? assetsDir: "static",

? ? //? html 的輸出路徑

? ? indexPath: "index.html",

? ? //文件名哈希

? ? filenameHashing: true,

? ? //用于多頁配置,默認(rèn)是 undefined

? ? pages: {

? ? ? ? index: {

? ? ? ? ? ? // page 的入口文件

? ? ? ? ? ? entry: 'src/index/main.js',

? ? ? ? ? ? // 模板文件

? ? ? ? ? ? template: 'public/index.html',

? ? ? ? ? ? // 在 dist/index.html 的輸出文件

? ? ? ? ? ? filename: 'index.html',

? ? ? ? ? ? // 當(dāng)使用頁面 title 選項(xiàng)時(shí),

? ? ? ? ? ? // template 中的 title 標(biāo)簽需要是 <title><%= htmlWebpackPlugin.options.title %></title>

? ? ? ? ? ? title: 'Index Page',

? ? ? ? ? ? // 在這個(gè)頁面中包含的塊冀瓦,默認(rèn)情況下會(huì)包含

? ? ? ? ? ? // 提取出來的通用 chunk 和 vendor chunk伴奥。

? ? ? ? ? ? chunks: ['chunk-vendors', 'chunk-common', 'index']

? ? ? ? },

? ? ? ? // 當(dāng)使用只有入口的字符串格式時(shí),

? ? ? ? // 模板文件默認(rèn)是 `public/subpage.html`

? ? ? ? // 如果不存在翼闽,就回退到 `public/index.html`拾徙。

? ? ? ? // 輸出文件默認(rèn)是 `subpage.html`。

? ? ? ? subpage: 'src/subpage/main.js'

? ? },

? ? //? 是否在保存的時(shí)候使用 `eslint-loader` 進(jìn)行檢查感局。

? ? lintOnSave: true,

? ? //? 是否使用帶有瀏覽器內(nèi)編譯器的完整構(gòu)建版本

? ? runtimeCompiler: false,

? ? //? babel-loader 默認(rèn)會(huì)跳過 node_modules 依賴尼啡。

? ? transpileDependencies: [ /* string or regex */ ],

? ? //? 是否為生產(chǎn)環(huán)境構(gòu)建生成 source map?

? ? productionSourceMap: true,

? ? //? 設(shè)置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 標(biāo)簽的 crossorigin 屬性询微。

? ? crossorigin: "",

? ? //? 在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 標(biāo)簽上啟用 Subresource Integrity (SRI)崖瞭。

? ? integrity: false,

? ? //? 調(diào)整內(nèi)部的 webpack 配置

? ? configureWebpack: () => {}, //(Object | Function)

? ? chainWebpack: () => {},

? ? // 配置 webpack-dev-server 行為。

? ? devServer: {

? ? ? ? open: process.platform === 'darwin',

? ? ? ? host: '0.0.0.0',

? ? ? ? port: 8080,

? ? ? ? https: false,

? ? ? ? hotOnly: false,

? ? ? ? // 查閱 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理

? ? ? ? proxy: {

? ? ? ? ? ? '/api': {

? ? ? ? ? ? ? ? target: "http://app.rmsdmedia.com",

? ? ? ? ? ? ? ? changeOrigin: true,

? ? ? ? ? ? ? ? secure: false,

? ? ? ? ? ? ? ? pathRewrite: {

? ? ? ? ? ? ? ? ? ? "^/api": ""

? ? ? ? ? ? ? ? }

? ? ? ? ? ? },

? ? ? ? ? ? '/foo': {

? ? ? ? ? ? ? ? target: '<other_url>'

? ? ? ? ? ? }

? ? ? ? }, // string | Object

? ? ? ? before: app => {}

? ? },

? ? // CSS 相關(guān)選項(xiàng)

? ? css: {

? ? ? ? // 將組件內(nèi)的 CSS 提取到一個(gè)單獨(dú)的 CSS 文件 (只用在生產(chǎn)環(huán)境中)

? ? ? ? // 也可以是一個(gè)傳遞給 `extract-text-webpack-plugin` 的選項(xiàng)對(duì)象

? ? ? ? extract: true,

? ? ? ? // 是否開啟 CSS source map撑毛?

? ? ? ? sourceMap: false,

? ? ? ? // 為預(yù)處理器的 loader 傳遞自定義選項(xiàng)书聚。比如傳遞給

? ? ? ? // Css-loader 時(shí),使用 `{ Css: { ... } }`藻雌。

? ? ? ? loaderOptions: {

? ? ? ? ? ? css: {

? ? ? ? ? ? ? ? // 這里的選項(xiàng)會(huì)傳遞給 css-loader

? ? ? ? ? ? },

? ? ? ? ? ? postcss: {

? ? ? ? ? ? ? ? // 這里的選項(xiàng)會(huì)傳遞給 postcss-loader

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? // 為所有的 CSS 及其預(yù)處理文件開啟 CSS Modules雌续。

? ? ? ? // 這個(gè)選項(xiàng)不會(huì)影響 `*.vue` 文件。

? ? ? ? modules: false

? ? },

? ? // 在生產(chǎn)環(huán)境下為 Babel 和 TypeScript 使用 `thread-loader`

? ? // 在多核機(jī)器下會(huì)默認(rèn)開啟胯杭。

? ? parallel: require('os').cpus().length > 1,

? ? // PWA 插件的選項(xiàng)驯杜。

? ? // 查閱 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md

? ? pwa: {},

? ? // 三方插件的選項(xiàng)

? ? pluginOptions: {

? ? ? ? // ...

? ? }

}

作者:Rising_life

鏈接:http://www.reibang.com/p/b358a91bdf2d

其實(shí)真正需要修改的不多,簡單的項(xiàng)目歉摧,大部分配置都默認(rèn)好了艇肴,不需要修改,

publicPath,assetsDir,productionSourceMap,css{sourceMap},還有devServer改下就行了

我貼下一個(gè)簡單的

module.exports = {

// publicPath:process.env.NODE_ENV === 'production' ? '/vue_workspac/aihuhuproject/' : '/',

//基本路徑

publicPath: './',//默認(rèn)的'/'是絕對(duì)路徑叁温,如果不確定在根路徑再悼,改成相對(duì)路徑'./'

// 輸出文件目錄

outputDir: 'dist',

assetsDir:'static',

indexPath:'index.html',

// eslint-loader 是否在保存的時(shí)候檢查

lintOnSave: true,

// 生產(chǎn)環(huán)境是否生成 sourceMap 文件

productionSourceMap: false,

// css相關(guān)配置

css: {

// 是否使用css分離插件 ExtractTextPlugin

extract: true,

// 開啟 CSS source maps?

sourceMap: false,

},

// webpack-dev-server 相關(guān)配置

devServer: {

open: false,//open 在devServer啟動(dòng)且第一次構(gòu)建完成時(shí),自動(dòng)用我們的系統(tǒng)的默認(rèn)瀏覽器去打開要開發(fā)的網(wǎng)頁

host: '0.0.0.0',//默認(rèn)是 localhost膝但。如果你希望服務(wù)器外部可訪問冲九,指定如下 host: '0.0.0.0',設(shè)置之后之后可以訪問ip地址

port: 8080,

hot:true,//hot配置是否啟用模塊的熱替換功能跟束,devServer的默認(rèn)行為是在發(fā)現(xiàn)源代碼被變更后莺奸,通過自動(dòng)刷新整個(gè)頁面來做到事實(shí)預(yù)覽,開啟hot后冀宴,將在不刷新整個(gè)頁面的情況下通過新模塊替換老模塊來做到實(shí)時(shí)預(yù)覽灭贷。

https: false,

hotOnly: false,// hot 和 hotOnly 的區(qū)別是在某些模塊不支持熱更新的情況下,前者會(huì)自動(dòng)刷新頁面略贮,后者不會(huì)刷新頁面甚疟,而是在控制臺(tái)輸出熱更新失敗

proxy: {

'/': {

target: 'http://xxxx:8080', //目標(biāo)接口域名

secure: false, //false為http訪問仗岖,true為https訪問

changeOrigin: true, //是否跨域

pathRewrite: {

'^/': '/' //重寫接口

}

}

}, // 設(shè)置代理

before: app => {}

},

// 第三方插件配置

pluginOptions: {

// ...

}

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市览妖,隨后出現(xiàn)的幾起案子轧拄,更是在濱河造成了極大的恐慌,老刑警劉巖讽膏,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檩电,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡府树,警方通過查閱死者的電腦和手機(jī)俐末,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挺尾,“玉大人鹅搪,你說我怎么就攤上這事站绪≡馄蹋” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵恢准,是天一觀的道長魂挂。 經(jīng)常有香客問我,道長馁筐,這世上最難降的妖魔是什么涂召? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮敏沉,結(jié)果婚禮上果正,老公的妹妹穿的比我還像新娘。我一直安慰自己盟迟,他們只是感情好秋泳,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著攒菠,像睡著了一般迫皱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辖众,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天卓起,我揣著相機(jī)與錄音,去河邊找鬼凹炸。 笑死戏阅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啤它。 我是一名探鬼主播奕筐,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼私杜,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了救欧?” 一聲冷哼從身側(cè)響起衰粹,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎笆怠,沒想到半個(gè)月后铝耻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹬刷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年瓢捉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片办成。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泡态,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迂卢,到底是詐尸還是另有隱情某弦,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布而克,位于F島的核電站靶壮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏员萍。R本人自食惡果不足惜腾降,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碎绎。 院中可真熱鬧螃壤,春花似錦、人聲如沸筋帖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幕随。三九已至蚁滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赘淮,已是汗流浹背辕录。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梢卸,地道東北人走诞。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像蛤高,于是被迫代替她去往敵國和親蚣旱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碑幅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容