Skip to content

引入

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} 个出错`);