vue-config-js配置參考
vue-cli3 腳手架搭建完成后,項目目錄中沒有 vue.config.js 文件胰柑,需要手動創(chuàng)建
創(chuàng)建vue.config.js
vue.config.js?是一個可選的配置文件概荷,如果項目的 (和?package.json?同級的) 根目錄中存在這個文件尘分,那么它會被?@vue/cli-service?自動加載。你也可以使用?package.json?中的?vue?字段侧漓,但是注意這種寫法需要你嚴(yán)格遵照 JSON 的格式來寫。
在根目錄中創(chuàng)建?vue.config.js
vue.config.js配置
這個文件應(yīng)該導(dǎo)出一個包含了選項的對象:
配置選項
publicPath?
Type:?string
Default:?'/'
?部署應(yīng)用包時的基本 URL监氢, 用法和 webpack 本身的?output.publicPath?一致布蔗。
這個值也可以被設(shè)置為空字符串 ('') 或是相對路徑 ('./'),這樣所有的資源都會被鏈接為相對路徑浪腐,這樣打出來的包可以被部署在任意路徑纵揍。
把開發(fā)服務(wù)器架設(shè)在根路徑,可以使用一個條件式的值:
outputDir
Type:?string
Default:?'dist'
輸出文件目錄议街,當(dāng)運(yùn)行?vue-cli-service build?時生成的生產(chǎn)環(huán)境構(gòu)建文件的目錄骡男。注意目標(biāo)目錄在構(gòu)建之前會被清除 (構(gòu)建時傳入?--no-clean?可關(guān)閉該行為)。
assetsDir
Type:?string
Default:?''
放置生成的靜態(tài)資源 (js傍睹、css隔盛、img、fonts) 的目錄拾稳。
注:從生成的資源覆寫 filename 或 chunkFilename 時吮炕,assetsDir?會被忽略。
indexPath
Type:?string
Default:?'index.html'
指定生成的?index.html?的輸出路徑 (相對于?outputDir)访得。也可以是一個絕對路徑龙亲。
filenameHashing
Type:?boolean
Default:?true
默認(rèn)情況下,生成的靜態(tài)資源在它們的文件名中包含了 hash 以便更好的控制緩存悍抑。然而鳄炉,這也要求 index 的 HTML 是被 Vue CLI 自動生成的。如果你無法使用 Vue CLI 生成的 index HTML搜骡,你可以通過將這個選項設(shè)為?false?來關(guān)閉文件名哈希拂盯。
pages
Type:?Object
Default:?undefined
在 multi-page(多頁)模式下構(gòu)建應(yīng)用。每個“page”應(yīng)該有一個對應(yīng)的 JavaScript 入口文件记靡。
其值應(yīng)該是一個對象谈竿,對象的 key 是入口的名字团驱,value 是:
一個指定了?entry,?template,?filename,?title?和?chunks?的對象 (除了?entry?之外都是可選的);
或一個指定其?entry?的字符串空凸。
注:當(dāng)在 多頁應(yīng)用 模式下構(gòu)建時嚎花,webpack 配置會包含不一樣的插件 (這時會存在多個?html-webpack-plugin?和?preload-webpack-plugin?的實(shí)例)。如果你試圖修改這些插件的選項呀洲,請確認(rèn)運(yùn)行?vue inspect紊选。
lintOnSave
Type:?boolean?|?'error'
Default:?true
是否在保存的時候使用 `eslint-loader` 進(jìn)行檢查。 有效的值:`ture` | `false` | `"error"`? 當(dāng)設(shè)置為 `"error"` 時道逗,檢查出的錯誤會觸發(fā)編譯失敗丛楚。
runtimeCompiler
Type:?boolean
Default:?false
是否使用包含運(yùn)行時編譯器的 Vue 構(gòu)建版本。設(shè)置為?true?后你就可以在 Vue 組件中使用?template?選項了憔辫,但是這會讓你的應(yīng)用額外增加 10kb 左右趣些。
transpileDependencies
Type:?Array<string | RegExp>
Default:?[]
默認(rèn)情況下?babel-loader?會忽略所有?node_modules?中的文件。如果你想要通過 Babel 顯式轉(zhuǎn)譯一個依賴贰您,可以在這個選項中列出來坏平。
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 中的?<link rel="stylesheet">?和?<script>?標(biāo)簽上啟用?Subresource Integrity?(SRI)。如果你構(gòu)建后的文件是部署在 CDN 上的杠园,啟用該選項可以提供額外的安全性顾瞪。
Webpack相關(guān)配置
configureWebpack
Type:?Object | Function
如果這個值是一個對象,則會通過?webpack-merge?合并到最終的配置中抛蚁。
如果這個值是一個函數(shù)陈醒,則會接收被解析的配置作為參數(shù)。該函數(shù)及可以修改配置并不返回任何東西瞧甩,也可以返回一個被克隆或合并過的配置版本钉跷。
chainWebpack
Type:?Function
是一個函數(shù),會接收一個基于?webpack-chain?的?ChainableConfig?實(shí)例肚逸。允許對內(nèi)部的 webpack 配置進(jìn)行更細(xì)粒度的修改爷辙。
Css相關(guān)配置
css.modules
Type:?boolean
Default:?false
默認(rèn)情況下,只有?*.module.[ext]?結(jié)尾的文件才會被視作 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 提取至一個獨(dú)立的 CSS 文件中 (而不是動態(tài)注入到 JavaScript 中的 inline 代碼)务冕。
css.sourceMap
Type:?boolean
Default:?false
是否為 CSS 開啟 source map血当。設(shè)置為?true?之后可能會影響構(gòu)建的性能。
css.loaderOptions
Type:?Object
Default:?{}
向 CSS 相關(guān)的 loader 傳遞選項。
支持的 loader 有:
devServer
Type:?Object
所有?webpack-dev-server?的選項都支持歹颓。注意:
有些值像?host坯屿、port?和?https?可能會被命令行參數(shù)覆寫油湖。
有些值像?publicPath?和?historyApiFallback?不應(yīng)該被修改巍扛,因?yàn)樗鼈冃枰烷_發(fā)服務(wù)器的?publicPath?同步以保障正常的工作。
devServer.proxy
Type:?string | Object
如果你的前端應(yīng)用和后端 API 服務(wù)器沒有運(yùn)行在同一個主機(jī)上乏德,你需要在開發(fā)環(huán)境下將 API 請求代理到 API 服務(wù)器撤奸。這個問題可以通過?vue.config.js?中的?devServer.proxy?選項來配置。
parallel
Type:?boolean
Default:?require('os').cpus().length > 1
是否為 Babel 或 TypeScript 使用?thread-loader喊括。該選項在系統(tǒng)的 CPU 有多于一個內(nèi)核時自動啟用胧瓜,僅作用于生產(chǎn)構(gòu)建。
pwa
Type:?Object
向?PWA 插件傳遞選項郑什。
pluginOptions
Type:?Object
這是一個不進(jìn)行任何 schema 驗(yàn)證的對象府喳,因此它可以用來傳遞任何第三方插件選項。
// Vue.config.js 配置選項
module.exports = {
? ? // 選項
? ? //? 基本路徑
? ? publicPath: "./",
? ? //? 構(gòu)建時的輸出目錄
? ? 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 選項時钝满,
? ? ? ? ? ? // template 中的 title 標(biāo)簽需要是 <title><%= htmlWebpackPlugin.options.title %></title>
? ? ? ? ? ? title: 'Index Page',
? ? ? ? ? ? // 在這個頁面中包含的塊,默認(rèn)情況下會包含
? ? ? ? ? ? // 提取出來的通用 chunk 和 vendor chunk申窘。
? ? ? ? ? ? chunks: ['chunk-vendors', 'chunk-common', 'index']
? ? ? ? },
? ? ? ? // 當(dāng)使用只有入口的字符串格式時弯蚜,
? ? ? ? // 模板文件默認(rèn)是 `public/subpage.html`
? ? ? ? // 如果不存在,就回退到 `public/index.html`剃法。
? ? ? ? // 輸出文件默認(rèn)是 `subpage.html`碎捺。
? ? ? ? subpage: 'src/subpage/main.js'
? ? },
? ? //? 是否在保存的時候使用 `eslint-loader` 進(jìn)行檢查。
? ? lintOnSave: true,
? ? //? 是否使用帶有瀏覽器內(nèi)編譯器的完整構(gòu)建版本
? ? runtimeCompiler: false,
? ? //? babel-loader 默認(rèn)會跳過 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)選項
? ? css: {
? ? ? ? // 將組件內(nèi)的 CSS 提取到一個單獨(dú)的 CSS 文件 (只用在生產(chǎn)環(huán)境中)
? ? ? ? // 也可以是一個傳遞給 `extract-text-webpack-plugin` 的選項對象
? ? ? ? extract: true,
? ? ? ? // 是否開啟 CSS source map?
? ? ? ? sourceMap: false,
? ? ? ? // 為預(yù)處理器的 loader 傳遞自定義選項俩块。比如傳遞給
? ? ? ? // Css-loader 時黎休,使用 `{ Css: { ... } }`。
? ? ? ? loaderOptions: {
? ? ? ? ? ? css: {
? ? ? ? ? ? ? ? // 這里的選項會傳遞給 css-loader
? ? ? ? ? ? },
? ? ? ? ? ? postcss: {
? ? ? ? ? ? ? ? // 這里的選項會傳遞給 postcss-loader
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? // 為所有的 CSS 及其預(yù)處理文件開啟 CSS Modules玉凯。
? ? ? ? // 這個選項不會影響 `*.vue` 文件势腮。
? ? ? ? modules: false
? ? },
? ? // 在生產(chǎn)環(huán)境下為 Babel 和 TypeScript 使用 `thread-loader`
? ? // 在多核機(jī)器下會默認(rèn)開啟。
? ? parallel: require('os').cpus().length > 1,
? ? // PWA 插件的選項漫仆。
? ? // 查閱 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md
? ? pwa: {},
? ? // 三方插件的選項
? ? pluginOptions: {
? ? ? ? // ...
? ? }
}