引入
ts
import {
getAllFiles,
toRelativePath,
replaceContentForAlias,
replaceAliasInFile,
collectFiles,
replaceAlias
} from 't-comm';
// 不支持 tree-shaking 的项目
import {
getAllFiles,
toRelativePath,
replaceContentForAlias,
replaceAliasInFile,
collectFiles,
replaceAlias
} from 't-comm/lib/replace-alias/index';
// 只支持 ESM 的项目
import {
getAllFiles,
toRelativePath,
replaceContentForAlias,
replaceAliasInFile,
collectFiles,
replaceAlias
} from 't-comm/es/replace-alias/index';getAllFiles()
描述:递归获取目录下所有匹配扩展名的文件
参数:
示例
ts
// 默认扫描 .vue/.js/.ts/.less/.css/.scss
const files = getAllFiles('/path/to/src');
// 自定义扫描扩展名
const tsFiles = getAllFiles('/path/to/src', ['.ts', '.tsx']);toRelativePath()
描述:将 alias 路径转换为相对路径
参数:
示例
ts
toRelativePath(
'/proj/src/views/Home/index.vue',
'src',
'components/Button/index.vue',
'/proj',
{ src: 'src' },
);
// '../../components/Button/index.vue'replaceContentForAlias()
描述:替换文件内容中单个 alias 的引入为相对路径
参数:
replaceAliasInFile()
描述:替换单个文件中的 alias 引入为相对路径
参数:
示例
ts
// 假设文件内原本写的是 `from 'src/components/Btn.vue'`
// 调用后会被改写为 `from '../../components/Btn.vue'`
const result = replaceAliasInFile(
'/proj/src/views/Home/index.vue',
'/proj',
{ src: 'src' },
);
// { replaced: true, error: null }collectFiles()
描述:收集所有需要扫描的文件列表
参数:
示例
ts
const files = collectFiles({
rootDir: '/proj',
aliasMap: { src: 'src' },
scanDirs: ['src/views', 'src/components'],
scanRootFiles: ['vite.config.ts'],
});replaceAlias(options)
描述:执行 alias 路径替换
参数:
| 参数名 | 描述 |
|---|---|
| options | 替换配置 |
返回: 替换统计信息
示例
ts
const { replacedCount, errorCount } = replaceAlias({
rootDir: '/proj',
aliasMap: {
src: 'src',
'@': 'src',
},
scanDirs: ['src'],
scanRootFiles: ['vite.config.ts', 'tsconfig.json'],
supportedExtensions: ['.ts', '.vue', '.scss'],
});
console.log(`替换了 ${replacedCount} 个文件,${errorCount} 个出错`);