vuepress-theme-plume/theme/src/node/config/extendsBundlerOptions.ts
2024-09-13 19:09:03 +08:00

74 lines
1.9 KiB
TypeScript

import {
addViteConfig,
addViteOptimizeDepsExclude,
addViteOptimizeDepsInclude,
addViteSsrNoExternal,
chainWebpack,
} from '@vuepress/helper'
import { isPackageExists } from 'local-pkg'
import type { App } from 'vuepress'
export function extendsBundlerOptions(bundlerOptions: any, app: App): void {
addViteConfig(bundlerOptions, app, {
build: {
chunkSizeWarningLimit: 2048,
},
})
addViteOptimizeDepsInclude(bundlerOptions, app, '@vueuse/core', true)
addViteOptimizeDepsExclude(bundlerOptions, app, '@theme')
addViteSsrNoExternal(bundlerOptions, app, [
'@vuepress/helper',
'@vuepress/plugin-reading-time',
'@vuepress/plugin-watermark',
])
if (isPackageExists('swiper')) {
addViteOptimizeDepsInclude(bundlerOptions, app, ['swiper/modules', 'swiper/vue'], true)
addViteSsrNoExternal(bundlerOptions, app, ['swiper'])
}
chainWebpack(bundlerOptions, app, (config) => {
config.module
.rule('scss')
.use('sass-loader')
.tap((options: any) => ({
api: 'modern-compiler',
...options,
sassOptions: {
silenceDeprecations: ['mixed-decls'],
...options.sassOptions,
},
}))
})
addViteConfig(bundlerOptions, app, {
css: {
preprocessorOptions: {
sass: {
logger: {
warn: (message, { deprecation, deprecationType }) => {
if (deprecation && deprecationType.id === 'mixed-decls')
return
console.warn(message)
},
},
},
scss: {
logger: {
warn: (message, { deprecation, deprecationType }) => {
if (deprecation && deprecationType.id === 'mixed-decls')
return
if (!message.includes('repetitive deprecation warnings omitted')) {
console.warn(message)
}
},
},
},
},
},
})
}