进阶 unplugin.unjs.io 2026-10-08 10:00:35 · 6 阅读

第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

评论 (0)