1
0

git.ts 792 B

12345678910111213141516171819202122232425262728293031323334
  1. import path from 'node:path';
  2. import { execa } from 'execa';
  3. export * from '@changesets/git';
  4. /**
  5. * 获取暂存区文件
  6. */
  7. async function getStagedFiles(): Promise<string[]> {
  8. try {
  9. const { stdout } = await execa('git', [
  10. '-c',
  11. 'submodule.recurse=false',
  12. 'diff',
  13. '--staged',
  14. '--diff-filter=ACMR',
  15. '--name-only',
  16. '--ignore-submodules',
  17. '-z',
  18. ]);
  19. let changedList = stdout ? stdout.replace(/\0$/, '').split('\0') : [];
  20. changedList = changedList.map((item) => path.resolve(process.cwd(), item));
  21. const changedSet = new Set(changedList);
  22. changedSet.delete('');
  23. return [...changedSet];
  24. } catch (error) {
  25. console.error('Failed to get staged files:', error);
  26. return [];
  27. }
  28. }
  29. export { getStagedFiles };