vue.config.js配置

vue-config-js配置參考

vue-cli3 腳手架搭建完成後,項目目錄中沒有 vue.config.js 文件,須要手動建立css

webp

建立vue.config.js

vue.config.js 是一個可選的配置文件,若是項目的 (和 package.json 同級的) 根目錄中存在這個文件,那麼它會被 @vue/cli-service 自動加載。你也可使用 package.json 中的 vue 字段,可是注意這種寫法須要你嚴格遵守 JSON 的格式來寫。html

在根目錄中建立 vue.config.js前端

webp


vue.config.js配置

這個文件應該導出一個包含了選項的對象:vue

webp

配置選項

publicPath node

Type: stringwebpack

Default: '/'git

 部署應用包時的基本 URL, 用法和 webpack 自己的 output.publicPath 一致。github

這個值也能夠被設置爲空字符串 ('') 或是相對路徑 ('./'),這樣全部的資源都會被連接爲相對路徑,這樣打出來的包能夠被部署在任意路徑。web

webp

把開發服務器架設在根路徑,可使用一個條件式的值:vue-cli

webp

outputDir

Type: string

Default: 'dist'

輸出文件目錄,當運行 vue-cli-service build 時生成的生產環境構建文件的目錄。注意目標目錄在構建以前會被清除 (構建時傳入 --no-clean 可關閉該行爲)。

webp

assetsDir

Type: string

Default: ''

放置生成的靜態資源 (js、css、img、fonts) 的目錄。

webp

注:從生成的資源覆寫 filename 或 chunkFilename 時,assetsDir 會被忽略。

indexPath

Type: string

Default: 'index.html'

指定生成的 index.html 的輸出路徑 (相對於 outputDir)。也能夠是一個絕對路徑。

webp

filenameHashing

Type: boolean

Default: true

默認狀況下,生成的靜態資源在它們的文件名中包含了 hash 以便更好的控制緩存。然而,這也要求 index 的 HTML 是被 Vue CLI 自動生成的。若是你沒法使用 Vue CLI 生成的 index HTML,你能夠經過將這個選項設爲 false 來關閉文件名哈希。

webp

pages

Type: Object

Default: undefined

在 multi-page(多頁)模式下構建應用。每一個「page」應該有一個對應的 JavaScript 入口文件。

其值應該是一個對象,對象的 key 是入口的名字,value 是:

一個指定了 entry, template, filename, title 和 chunks 的對象 (除了 entry 以外都是可選的);

或一個指定其 entry 的字符串。

webp

注:當在 多頁應用 模式下構建時,webpack 配置會包含不同的插件 (這時會存在多個 html-webpack-plugin 和 preload-webpack-plugin 的實例)。若是你試圖修改這些插件的選項,請確認運行 vue inspect。

lintOnSave

Type: boolean | 'error'

Default: true

是否在保存的時候使用 `eslint-loader` 進行檢查。 有效的值:`ture` | `false` | `"error"`  當設置爲 `"error"` 時,檢查出的錯誤會觸發編譯失敗。

webp

runtimeCompiler

Type: boolean

Default: false

是否使用包含運行時編譯器的 Vue 構建版本。設置爲 true 後你就能夠在 Vue 組件中使用 template 選項了,可是這會讓你的應用額外增長 10kb 左右。

webp

transpileDependencies

Type: Array<string | RegExp>

Default: []

默認狀況下 babel-loader 會忽略全部 node_modules 中的文件。若是你想要經過 Babel 顯式轉譯一個依賴,能夠在這個選項中列出來。

productionSourceMap

Type: boolean

Default: true

若是你不須要生產環境的 source map,能夠將其設置爲 false 以加速生產環境構建。

crossorigin

Type: string

Default: undefined

設置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 標籤的 crossorigin 屬性。

integrity

Type: boolean

Default: false

在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 標籤上啓用 Subresource Integrity (SRI)。若是你構建後的文件是部署在 CDN 上的,啓用該選項能夠提供額外的安全性。


Webpack相關配置

configureWebpack

Type: Object | Function

若是這個值是一個對象,則會經過 webpack-merge 合併到最終的配置中。

若是這個值是一個函數,則會接收被解析的配置做爲參數。該函數及能夠修改配置並不返回任何東西,也能夠返回一個被克隆或合併過的配置版本。

chainWebpack

Type: Function

是一個函數,會接收一個基於 webpack-chain 的 ChainableConfig 實例。容許對內部的 webpack 配置進行更細粒度的修改。


Css相關配置

webp

css.modules

Type: boolean

Default: false

默認狀況下,只有 *.module.[ext] 結尾的文件纔會被視做 CSS Modules 模塊。設置爲 true 後你就能夠去掉文件名中的 .module 並將全部的 *.(css|scss|sass|less|styl(us)?) 文件視爲 CSS Modules 模塊。

css.extract

Type: boolean | Object

Default: 生產環境下是 true,開發環境下是 false

是否將組件中的 CSS 提取至一個獨立的 CSS 文件中 (而不是動態注入到 JavaScript 中的 inline 代碼)。

css.sourceMap

Type: boolean

Default: false

是否爲 CSS 開啓 source map。設置爲 true 以後可能會影響構建的性能。

css.loaderOptions

Type: Object

Default: {}

向 CSS 相關的 loader 傳遞選項。

支持的 loader 有:

css-loader

postcss-loader

sass-loader

less-loader

stylus-loader


devServer

Type: Object

全部 webpack-dev-server 的選項都支持。注意:

有些值像 host、port 和 https 可能會被命令行參數覆寫。

有些值像 publicPath 和 historyApiFallback 不該該被修改,由於它們須要和開發服務器的 publicPath 同步以保障正常的工做。

devServer.proxy

Type: string | Object

若是你的前端應用和後端 API 服務器沒有運行在同一個主機上,你須要在開發環境下將 API 請求代理到 API 服務器。這個問題能夠經過 vue.config.js 中的 devServer.proxy 選項來配置。

webp


parallel

Type: boolean

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

是否爲 Babel 或 TypeScript 使用 thread-loader。該選項在系統的 CPU 有多於一個內核時自動啓用,僅做用於生產構建。

pwa

Type: Object

向 PWA 插件傳遞選項。

pluginOptions

Type: Object

這是一個不進行任何 schema 驗證的對象,所以它能夠用來傳遞任何第三方插件選項。


// Vue.config.js 配置選項

module.exports = {

    // 選項

    //  基本路徑

    publicPath: "./",

    //  構建時的輸出目錄

    outputDir: "dist",

    //  放置靜態資源的目錄

    assetsDir: "static",

    //  html 的輸出路徑

    indexPath: "index.html",

    //文件名哈希

    filenameHashing: true,

    //用於多頁配置,默認是 undefined

    pages: {

        index: {

            // page 的入口文件

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

            // 模板文件

            template: 'public/index.html',

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

            filename: 'index.html',

            // 當使用頁面 title 選項時,

            // template 中的 title 標籤須要是 <title><%= htmlWebpackPlugin.options.title %></title>

            title: 'Index Page',

            // 在這個頁面中包含的塊,默認狀況下會包含

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

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

        },

        // 當使用只有入口的字符串格式時,

        // 模板文件默認是 `public/subpage.html`

        // 若是不存在,就回退到 `public/index.html`。

        // 輸出文件默認是 `subpage.html`。

        subpage: 'src/subpage/main.js'

    },

    //  是否在保存的時候使用 `eslint-loader` 進行檢查。

    lintOnSave: true,

    //  是否使用帶有瀏覽器內編譯器的完整構建版本

    runtimeCompiler: false,

    //  babel-loader 默認會跳過 node_modules 依賴。

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

    //  是否爲生產環境構建生成 source map?

    productionSourceMap: true,

    //  設置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 標籤的 crossorigin 屬性。

    crossorigin: "",

    //  在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 標籤上啓用 Subresource Integrity (SRI)。

    integrity: false,

    //  調整內部的 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 相關選項

    css: {

        // 將組件內的 CSS 提取到一個單獨的 CSS 文件 (只用在生產環境中)

        // 也能夠是一個傳遞給 `extract-text-webpack-plugin` 的選項對象

        extract: true,

        // 是否開啓 CSS source map?

        sourceMap: false,

        // 爲預處理器的 loader 傳遞自定義選項。好比傳遞給

        // Css-loader 時,使用 `{ Css: { ... } }`。

        loaderOptions: {

            css: {

                // 這裏的選項會傳遞給 css-loader

            },

            postcss: {

                // 這裏的選項會傳遞給 postcss-loader

            }

        },

        // 爲全部的 CSS 及其預處理文件開啓 CSS Modules。

        // 這個選項不會影響 `*.vue` 文件。

        modules: false

    },

    // 在生產環境下爲 Babel 和 TypeScript 使用 `thread-loader`

    // 在多核機器下會默認開啓。

    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: {

        // ...

    }






簡單的項目,大部分配置都默認好了,不須要修改,
publicPath,assetsDir,productionSourceMap,css{sourceMap},還有devServer改下就好了
我貼下一個簡單的

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

//基本路徑
publicPath: './',//默認的'/'是絕對路徑,若是不肯定在根路徑,改爲相對路徑'./'
// 輸出文件目錄
outputDir: 'dist',
assetsDir:'static',
indexPath:'index.html',
// eslint-loader 是否在保存的時候檢查
lintOnSave: true,
// 生產環境是否生成 sourceMap 文件
productionSourceMap: false,
// css相關配置
css: {
// 是否使用css分離插件 ExtractTextPlugin
extract: true,
// 開啓 CSS source maps?
sourceMap: false,
},
// webpack-dev-server 相關配置
devServer: {
open: false,//open 在devServer啓動且第一次構建完成時,自動用咱們的系統的默認瀏覽器去打開要開發的網頁
host: '0.0.0.0',//默認是 localhost。若是你但願服務器外部可訪問,指定以下 host: '0.0.0.0',設置以後以後能夠訪問ip地址
port: 8080,
hot:true,//hot配置是否啓用模塊的熱替換功能,devServer的默認行爲是在發現源代碼被變動後,經過自動刷新整個頁面來作到事實預覽,開啓hot後,將在不刷新整個頁面的狀況下經過新模塊替換老模塊來作到實時預覽。
https: false,
hotOnly: false,// hot 和 hotOnly 的區別是在某些模塊不支持熱更新的狀況下,前者會自動刷新頁面,後者不會刷新頁面,而是在控制檯輸出熱更新失敗
proxy: {
'/': {
target: 'http://xxxx:8080', //目標接口域名
secure: false, //false爲http訪問,true爲https訪問
changeOrigin: true, //是否跨域
pathRewrite: {
'^/': '/' //重寫接口
}
}
}, // 設置代理
before: app => {}
},
// 第三方插件配置
pluginOptions: {
// ...
}
};

相關文章
相關標籤/搜索