@vue/cli3項目搭建(二)

配置vue.config.js

配置全局sass變量

module.exports = {

    // 全局配置css文件
    css: {
        loaderOptions: {
            sass: {
                prependData: `
                    @import "@/css/common.scss";
                    `
            }
        }
    },
}

但是這裏有個坑,sass-loader 新版和舊版寫法不一樣

// 舊
data: `@import "~@/assets/scss/common.scss";`
// 新
prependData: `@import "~@/assets/scss/common.scss";`

關掉煩人的eslint錯誤檢測

vue.config.js中添加

	lintOnSave:false,

html中插入環境變量

在這裏插入圖片描述
可以分別加載開發環境和生產環境的變量

自定義生成的靜態資源的路徑
assetsDir:'./static',

在這裏插入圖片描述

代理配置
	devServer: {
        open: true,	 //npm run serve時自動打開頁面
        proxy: {
            '/api': {
                target: 'http://api.home.cc',
                // 在本地會創建一個虛擬服務端,然後發送請求的數據,並同時接收請求的數據,這樣服務端和服務端進行數據的交互就不會有跨域問題
                changeOrigin: true,
                ws: true,
                pathRewrite: {
                    // 替換target中的請求地址,也就是說以後你在請求http://api.jisuapi.com/XXXXX這個地址的時候直接寫成/api即可
                    '^/api': '/'
                }
            },
        },

    },
模擬數據
//json數據
const mock = require('./data/mock.json');

	devServer: {
        proxy: {},
        before(app) {
        	// 定義接口
            app.get("/api/mockData", (req, res) => {
              res.json(mock);
            });
            app.get("/api/main", (req, res) => {
              res.json(1);
            });
          },
    },

配置

const mock = require('./data/mock.json');

module.exports = {

    publicPath: './', // 基本路徑
    outputDir: 'dist', // 輸出文件目錄
    lintOnSave:false, // eslint-loader 是否在保存的時候檢查
    productionSourceMap: false, // 生產環境是否生成 sourceMap 文件
    assetsDir:'./static', //靜態資源生成目錄

    // 全局配置css文件
    css: {
        loaderOptions: {
            sass: {
                prependData: `
                    @import "@/css/common.scss";
                    `
            }
        }
    },

    devServer: {
        open: true,
        proxy: {
            '/api': {
                target: 'http://api.crmhome.cc',
                // 在本地會創建一個虛擬服務端,然後發送請求的數據,並同時接收請求的數據,這樣服務端和服務端進行數據的交互就不會有跨域問題
                changeOrigin: true,
                ws: true,
                pathRewrite: {
                    // 替換target中的請求地址,也就是說以後你在請求http://api.jisuapi.com/XXXXX這個地址的時候直接寫成/api即可
                    '^/api': '/'
                }
            },
        },
        before(app) {
            app.get("/api/mockData", (req, res) => {
              res.json(mock);
            });
            app.get("/api/main", (req, res) => {
              res.json(1);
            });
          },
    },

    // vue路由按需加載 去除插件
    chainWebpack(config) {
        config.plugins.delete('preload')
        config.plugins.delete('prefetch')
    },

    configureWebpack: config => {
        config.plugins.push(
            new webpack.ProvidePlugin({
                $: "jquery",
                jQuery: "jquery",
                "windows.jQuery": "jquery"
            })
        )
        // 開發環境不需要gzip
        if (process.env.NODE_ENV === 'production'){
            config.plugins.push(
                new CompressionWebpackPlugin({
                    // 正在匹配需要壓縮的文件後綴
                    test: /\.(js|css|svg|woff|ttf|json|html)$/,
                    // 大於10kb的會壓縮
                    threshold: 10240
                })
            )
        }
        
    },

}

vue.config.js更多配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章