mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-24 11:08:16 +08:00
32 lines
827 B
TypeScript
32 lines
827 B
TypeScript
import type { UnpluginFactory, UnpluginOptions } from 'unplugin'
|
|
import type { ReplacementRule } from '../options.js'
|
|
import { transformAssets } from './transform.js'
|
|
import { createAssetPattern, isHTMLRequest, isNonJsRequest } from './utils.js'
|
|
|
|
export const unpluginFactory: UnpluginFactory<ReplacementRule[]> = (rules) => {
|
|
const plugins: UnpluginOptions[] = []
|
|
|
|
if (rules.length) {
|
|
plugins.push({
|
|
name: 'vuepress:replace-assets',
|
|
enforce: 'pre',
|
|
transformInclude(id: string) {
|
|
if (isHTMLRequest(id) || isNonJsRequest(id))
|
|
return false
|
|
return true
|
|
},
|
|
transform(code) {
|
|
return {
|
|
code: transformAssets(
|
|
code,
|
|
createAssetPattern('/[^/]'),
|
|
rules,
|
|
),
|
|
}
|
|
},
|
|
})
|
|
}
|
|
|
|
return plugins
|
|
}
|