utils.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. const { RushConfiguration } = require('@rushstack/rush-sdk')
  2. const getRushConfiguration = (function () {
  3. let rushConfiguration = null
  4. return function () {
  5. // eslint-disable-next-line
  6. return (rushConfiguration ||= RushConfiguration.loadFromDefaultLocation({
  7. startingFolder: process.cwd(),
  8. }))
  9. }
  10. })()
  11. function getChangedPackages(changedFiles) {
  12. const changedPackages = new Set()
  13. try {
  14. const rushConfiguration = getRushConfiguration()
  15. const { rushJsonFolder } = rushConfiguration
  16. const lookup = rushConfiguration.getProjectLookupForRoot(rushJsonFolder)
  17. for (const file of changedFiles) {
  18. const project = lookup.findChildPath(file)
  19. // 如果没找到注册的包信息,则认为是通用文件更改
  20. const packageName = project?.packageName || 'misc'
  21. if (!changedPackages.has(packageName)) {
  22. changedPackages.add(packageName)
  23. }
  24. }
  25. } catch (e) {
  26. console.error(e)
  27. throw e
  28. }
  29. return changedPackages
  30. }
  31. exports.getChangedPackages = getChangedPackages
  32. exports.getRushConfiguration = getRushConfiguration