149 lines
3.1 KiB
JavaScript
149 lines
3.1 KiB
JavaScript
const path = require('path')
|
|
const MonacoEditorPlugin = require('monaco-editor-webpack-plugin')
|
|
|
|
function resolve (p) {
|
|
return path.resolve(__dirname, p)
|
|
}
|
|
|
|
function appendLoader (config, loader) {
|
|
config.module.rules.push(loader)
|
|
}
|
|
|
|
module.exports = {
|
|
target: 'static',
|
|
telemetry: false,
|
|
|
|
/**
|
|
* Headers of the page
|
|
*/
|
|
head: {
|
|
title: 'VEUI',
|
|
meta: [
|
|
{ charset: 'utf-8' },
|
|
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
|
{
|
|
hid: 'description',
|
|
name: 'description',
|
|
content: 'Website for VEUI: an enterprise component library for Vue.js.'
|
|
},
|
|
{
|
|
name: 'theme-color', content: '#0052cc'
|
|
}
|
|
],
|
|
link: [
|
|
{ rel: 'shortcut icon', href: 'https://www.baidu.com/favicon.ico' }
|
|
]
|
|
},
|
|
/**
|
|
* Customize the progress bar color
|
|
*/
|
|
loading: { color: '#0052cc' },
|
|
|
|
pageTransition: {
|
|
css: false
|
|
},
|
|
|
|
css: ['veui-theme-dls/common.less', '@/assets/styles/global.styl', 'veui-theme-dls/'],
|
|
|
|
plugins: [
|
|
{ src: '~plugins/i18n.js' },
|
|
{ src: '~plugins/l10n.js' },
|
|
{ src: '~plugins/target.js', ssr: false },
|
|
{ src: '~plugins/hm.js', ssr: false }
|
|
],
|
|
|
|
/**
|
|
* Build configuration
|
|
*/
|
|
build: {
|
|
cache: true,
|
|
|
|
parallel: true,
|
|
|
|
transpile: ['veui', 'vue-awesome', 'resize-detector', 'less-plugin-dls', 'dls-graphics'],
|
|
|
|
babel: {
|
|
plugins: ['veui']
|
|
},
|
|
|
|
loaders: {
|
|
vue: {
|
|
compilerOptions: {
|
|
whitespace: 'condense'
|
|
}
|
|
},
|
|
stylus: {
|
|
'include css': true
|
|
},
|
|
less: {
|
|
javascriptEnabled: true
|
|
}
|
|
},
|
|
|
|
plugins: [
|
|
new MonacoEditorPlugin({
|
|
languages: ['javascript', 'css', 'html', 'typescript']
|
|
})
|
|
],
|
|
|
|
extend (config) {
|
|
/**
|
|
* veui-loader
|
|
*/
|
|
appendLoader(config, {
|
|
enforce: 'pre',
|
|
test: /\.vue$/,
|
|
loader: 'veui-loader',
|
|
options: {
|
|
locale: ['zh-Hans', 'en-US'],
|
|
modules: [
|
|
{
|
|
package: 'veui-theme-dls',
|
|
fileName: '{module}.js',
|
|
transform: false
|
|
}
|
|
]
|
|
},
|
|
include: [resolve('pages'), resolve('node_modules/veui')]
|
|
})
|
|
|
|
appendLoader(config, {
|
|
test: /\.js$/,
|
|
include: [resolve('node_modules/focus-visible')],
|
|
loader: 'short-circuit-loader',
|
|
options: {
|
|
expr: "process.env.VUE_ENV === 'server'"
|
|
}
|
|
})
|
|
|
|
config.resolve.alias.vue$ = 'vue/dist/vue.esm.js'
|
|
config.resolve.alias['vue-monaco'] = '@justfork/vue-monaco'
|
|
},
|
|
|
|
optimization: {
|
|
splitChunks: {
|
|
cacheGroups: {
|
|
veui: {
|
|
test: /node_modules[\\/]veui/,
|
|
chunks: 'all',
|
|
priority: 20,
|
|
name: true
|
|
},
|
|
'veui-theme-dls-icons': {
|
|
test: /node_modules[\\/]veui-theme-dls-icons/,
|
|
chunks: 'all',
|
|
priority: 20,
|
|
name: true
|
|
},
|
|
'vue-live': {
|
|
test: /node_modules[\\/]vue-live/,
|
|
chunks: 'all',
|
|
priority: 20,
|
|
name: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|