vite-plugin-file-macros
v0.2.0
Published
Vite plugin that injects file-specific macros like __FILE__ and __FILENAME__.
Maintainers
Readme
vite-plugin-file-macros
一个在 Vite 中提供“文件宏”的插件,让你在源码里直接获取当前文件相关信息:
__FILE__:文件路径(默认相对项目根目录)。__FILENAME__:仅文件名。
适用于开发与构建阶段,均可使用。
安装
npm i -D vite-plugin-file-macros使用
在 vite.config.ts 中启用插件:
import { defineConfig } from 'vite'
import fileMacros from 'vite-plugin-file-macros'
export default defineConfig({
plugins: [
fileMacros({
// 可选:输出格式 'relative' | 'absolute' | 'basename'
format: 'relative',
// 可选:统一路径分隔符为 '/'
normalizeSlash: true
})
]
})在任意源码文件中使用宏:
console.log(__FILE__) // 例如: "src/components/Button.tsx"
console.log(__FILENAME__) // 例如: "Button.tsx"注意:为了保持替换安全与简洁,插件不会替换字符串字面量或模板字面量中的宏(如
"__FILE__"或`path: ${__FILE__}`)。如果需要,请将宏作为独立标识符使用或拼接。
TypeScript 类型提示
为了在 TS 中获得全局宏的类型提示,请在项目 tsconfig.json 中加入:
{
"compilerOptions": {
"types": ["vite-plugin-file-macros"]
}
}或在需要的文件顶部添加:
/// <reference types="vite-plugin-file-macros" />选项
interface FileMacrosOptions {
// 输出格式:相对路径、绝对路径或仅文件名
format?: 'relative' | 'absolute' | 'basename'
// 包含与排除的 glob 匹配
include?: string | string[]
exclude?: string | string[]
// 跨平台统一路径分隔符为 '/'
normalizeSlash?: boolean
// 自定义宏名称
tokens?: {
file?: string // 默认 '__FILE__'
filename?: string // 默认 '__FILENAME__'
}
}- 默认
include:**/*.{js,jsx,ts,tsx,vue,svelte} - 默认
exclude:node_modules/**,**/*.d.ts
兼容性
- Node.js >= 18
- Vite ^4 或 ^5
发布到 npm(指南)
- 更新版本号:编辑
package.json中的version。 - 构建产物:
npm run build - 登录并发布:
npm login npm publish --access public
本包未附带 License,你可根据自身需要添加。
原理简述
- 使用 Vite 插件
transform钩子,根据当前处理文件的路径计算宏值。 - 采用
magic-string进行安全地代码替换与 sourcemap 生成。 - 使用
picomatch控制包含/排除文件范围。
