161 lines
4.6 KiB
JavaScript
161 lines
4.6 KiB
JavaScript
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|||
|
|
|||
|
/**
|
|||
|
* @description vue.config.js全局配置
|
|||
|
*/
|
|||
|
|
|||
|
const {
|
|||
|
baseURL,
|
|||
|
title,
|
|||
|
devPort,
|
|||
|
assetsDir,
|
|||
|
outputDir,
|
|||
|
lintOnSave,
|
|||
|
publicPath,
|
|||
|
transpileDependencies,
|
|||
|
} = require('./src/config')
|
|||
|
const dayjs = require('dayjs')
|
|||
|
const pkg = require('./package.json')
|
|||
|
|
|||
|
const { resolve, relative } = require('path')
|
|||
|
const { defineConfig } = require('@vue/cli-service')
|
|||
|
const {
|
|||
|
createVuePlugin,
|
|||
|
createChainWebpack,
|
|||
|
} = require('./library/build/index.ts')
|
|||
|
|
|||
|
const pc = require('picocolors')
|
|||
|
|
|||
|
const info = {
|
|||
|
...pkg,
|
|||
|
lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|||
|
}
|
|||
|
|
|||
|
process.env.VUE_APP_TITLE = title
|
|||
|
process.env.VUE_APP_AUTHOR = pkg.author
|
|||
|
process.env.VUE_APP_INFO = JSON.stringify(info)
|
|||
|
process.env.VUE_APP_UPDATE_TIME = info.lastBuildTime
|
|||
|
process.env.VUE_APP_GITHUB_USER_NAME = process.env.VUE_GITHUB_USER_NAME
|
|||
|
process.env.VUE_APP_RANDOM = `${info.lastBuildTime}-${process.env.VUE_GITHUB_USER_NAME}`
|
|||
|
|
|||
|
module.exports = defineConfig({
|
|||
|
publicPath,
|
|||
|
assetsDir,
|
|||
|
outputDir,
|
|||
|
lintOnSave,
|
|||
|
transpileDependencies,
|
|||
|
devServer: {
|
|||
|
compress: true,
|
|||
|
client: {
|
|||
|
progress: false,
|
|||
|
overlay: {
|
|||
|
warnings: false,
|
|||
|
errors: true,
|
|||
|
runtimeErrors: false,
|
|||
|
},
|
|||
|
},
|
|||
|
hot: true,
|
|||
|
open: {
|
|||
|
target: [`http://localhost:${devPort}`],
|
|||
|
},
|
|||
|
port: devPort,
|
|||
|
setupMiddlewares: require('./mock'),
|
|||
|
// 注释掉的地方是前端配置代理访问后端的示例,如无特别需求,不建议使用!!!
|
|||
|
// baseURL必须为/xxx,而不是后端服务器,请先了解代理逻辑,再设置前端代理
|
|||
|
// !!!一定要注意!!!
|
|||
|
// 1、这里配置了跨域及代理只针对开发环境生效
|
|||
|
// 2、不建议你在前端配置跨域,建议你后端配置Allow-Origin,Method,Headers,放行token字段,一步到位
|
|||
|
// 3、后端配置了跨域,就不需要前端再配置,会发生Origin冲突
|
|||
|
// 4、webpack5版本前端配置代理无法与mock同时使用,如果一定要用前端代理,需注释setupMiddlewares: require('./mock')
|
|||
|
// proxy: {
|
|||
|
// [baseURL]: {
|
|||
|
// target: `https://xxx.com`,
|
|||
|
// ws: true,
|
|||
|
// changeOrigin: true,
|
|||
|
// pathRewrite: {
|
|||
|
// ['^' + baseURL]: '',
|
|||
|
// },
|
|||
|
// },
|
|||
|
// },
|
|||
|
},
|
|||
|
pwa: {
|
|||
|
workboxOptions: {
|
|||
|
skipWaiting: true,
|
|||
|
clientsClaim: true,
|
|||
|
},
|
|||
|
themeColor: '#ffffff',
|
|||
|
msTileColor: '#ffffff',
|
|||
|
appleMobileWebAppCapable: 'yes',
|
|||
|
appleMobileWebAppStatusBarStyle: 'black',
|
|||
|
manifestOptions: {
|
|||
|
name: 'Vue Admin Better - Admin Plus',
|
|||
|
short_name: 'Admin Plus',
|
|||
|
background_color: '#ffffff',
|
|||
|
},
|
|||
|
},
|
|||
|
configureWebpack() {
|
|||
|
return {
|
|||
|
resolve: {
|
|||
|
alias: {
|
|||
|
'~': resolve(__dirname, '.'),
|
|||
|
'@': resolve(__dirname, 'src'),
|
|||
|
'/#': resolve(__dirname, 'types'),
|
|||
|
'@vab': resolve(__dirname, 'library'),
|
|||
|
'@gp': resolve('library/plugins/vab'),
|
|||
|
'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
|
|||
|
},
|
|||
|
fallback: {
|
|||
|
fs: false,
|
|||
|
path: require.resolve('path-browserify'),
|
|||
|
},
|
|||
|
},
|
|||
|
plugins: createVuePlugin(),
|
|||
|
performance: {
|
|||
|
hints: false,
|
|||
|
},
|
|||
|
}
|
|||
|
},
|
|||
|
chainWebpack(config) {
|
|||
|
//为了防止忘记配置而造成项目无法打包,请保留以下提示
|
|||
|
if (process.env.NODE_ENV === 'production') {
|
|||
|
if (
|
|||
|
process['env'].VUE_GITHUB_USER_NAME === 'test' ||
|
|||
|
process['env'].VUE_APP_SECRET_KEY === 'preview'
|
|||
|
) {
|
|||
|
console.log(
|
|||
|
`\n\n${pc.red(
|
|||
|
'检测到您的用户名或key未配置,key在购买时通过邮件邀请函发放,如您已购买请仔细阅读文档并进行配置,配置完成后方可打包使用。购买地址:https://vue-admin-beautiful.com/authorization'
|
|||
|
)}\n`
|
|||
|
)
|
|||
|
process.exit()
|
|||
|
}
|
|||
|
}
|
|||
|
createChainWebpack(process.env.NODE_ENV, config)
|
|||
|
},
|
|||
|
runtimeCompiler: false,
|
|||
|
productionSourceMap: false,
|
|||
|
css: {
|
|||
|
sourceMap: false,
|
|||
|
extract:
|
|||
|
process.env.NODE_ENV === 'production'
|
|||
|
? {
|
|||
|
ignoreOrder: true,
|
|||
|
}
|
|||
|
: false,
|
|||
|
loaderOptions: {
|
|||
|
sass: {
|
|||
|
sassOptions: { outputStyle: 'expanded' },
|
|||
|
additionalData(content, { rootContext, resourcePath }) {
|
|||
|
const relativePath = relative(rootContext, resourcePath)
|
|||
|
if (
|
|||
|
relativePath.replace(/\\/g, '/') !==
|
|||
|
'library/styles/variables/variables.module.scss'
|
|||
|
)
|
|||
|
return `@use "~@vab/styles/variables/variables.module.scss" as *;${content}`
|
|||
|
return content
|
|||
|
},
|
|||
|
},
|
|||
|
},
|
|||
|
},
|
|||
|
})
|