我有一个配置文件(config.js),该文件取决于两个文件:local.js(用于开发环境)和deploy.js(用于生产环境)。在run serve
或run build
之后,它将创建一些依赖于环境的配置。我使用它的方式如下:
<template>
</template>
<script>
import config from '@/assets/scripts/config.js'
export default {
data() {
return {
apiBasePath: config.apiBasePath
}
}
}
</script>
我的config.js:
import local from '../../../config/local'
import deploy from '../../../config/deploy'
export default {
apiBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.emergencyPort
: local.corsDomain + ':' + local.emergencyPort,fileBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.emergencyPort
: local.corsDomain + ':5000',dataBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.emergencyPort
: 'http://localhost' + ':' + local.emergencyPort,vocApiPath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.sharePort
: local.corsDomain + ':' + local.sharePort,visualBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.simulatorPort
: local.corsDomain + ':' + local.simulatorPort,spotBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.samplePort
: local.corsDomain + ':' + local.samplePort,shareBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.sharePort
: local.corsDomain + ':' + local.sharePort,envBasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.envPort
: local.corsDomain + ':' + local.envPort,ep360BasePath:
process.env.NODE_ENV === 'production'
? deploy.corsDomain + ':' + deploy.ep360Port
: local.corsDomain + ':' + local.ep360Port,defaultDivision: {
province: deploy.defaultProvince ? deploy.defaultProvince : '浙江省',city: deploy.defaultCity ? deploy.defaultCity : '宁波市',area: deploy.defaultArea ? deploy.defaultArea : '鄞州区'
}
}
但是在构建之后,这些配置将插入到大块通用脚本中。
我的目的地是:
将此配置文件从我的通用块中拆分为一个文件(假设其名称为config。[hash] .js),它将在run build
时插入HTML中的脚本标记。之后,我可以更改服务器中的某些配置,并且在设置一些错误的配置时无需重建项目
更多详细信息:我的项目是一个多条目项目,几乎每个条目中都导入config.js。我尝试了@Arunmozhi所说的动态导入,尽管拆分了 config块,但由于返回了data
,因此无法在Promise
函数中获取配置。我正在尝试使用splitChunks
解决我的问题,但这没有用。
optimization: {
splitChunks: {
cacheGroups: {
myconfig: {
test: module => {
module
.identifier()
.split('/')
.reduceRight(item => item)
.indexOf('config') !== -1
},name: 'myconfig',enforce: true,chunks: 'all',reuseExistingChunk: true,minChunks: 1,minSize: 0
}
}
}
}