第13章 unplugin-replace
unplugin-replace
一个通用的打包器插件,基于 @rollup/plugin-replace,用于替换文件中的指定字符串。
安装
bash # npm npm i -D unplugin-replace
# jsr npx jsr add -D @unplugin/replace
Vite
ts // vite.config.ts import Replace from 'unplugin-replace/vite'
export default defineConfig({ plugins: [Replace()], })
Rollup
ts // rollup.config.js import Replace from 'unplugin-replace/rollup'
export default { plugins: [Replace()], }
esbuild
ts // esbuild.config.js import { build } from 'esbuild'
build({ plugins: [require('unplugin-replace/esbuild')()], })
Webpack
ts // webpack.config.js module.exports = { /* ... */ plugins: [require('unplugin-replace/webpack')()], }
用法
选项
完整选项请参见文档。该插件支持 @rollup/plugin-replace 的所有选项,并增加了一些该插件特有的选项。
options.values
类型:{ [find: string]: Replacement } | ReplaceItem[] 默认值:[]
ts type ReplaceItem = { / 提供字符串或正则表达式以定位目标内容 */ find: string | RegExp
/ * 可以是字符串或函数。 * - 如果是字符串,将替换由 pattern 匹配到的子串,支持若干种特殊替换模式 * - 如果是函数,将对每个匹配项调用,返回值用作替换文本 */ replacement: Replacement }
type Replacement = string | ((id: string, match: RegExpExecArray) => string)
与 @rollup/plugin-replace 相比,find 选项支持正则表达式。
示例:
ts Replace({ values: [ { find: /apples/gi, replacement: 'oranges', }, { find: 'process.env.NODE_ENV', replacement: '"production"', }, ], })
赞助商
许可证
MIT License © 2024-PRESENT Kevin Deng