sort.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /**
  2. * arbitrary sort order for package.json largely pulled from:
  3. * https://github.com/keithamus/sort-package-json/blob/main/defaultRules.md
  4. *
  5. * cross checked with:
  6. * https://github.com/npm/types/blob/main/types/index.d.ts#L104
  7. * https://docs.npmjs.com/cli/configuring-npm/package-json
  8. */
  9. function packageSort (json) {
  10. const {
  11. name,
  12. version,
  13. private: isPrivate,
  14. description,
  15. keywords,
  16. homepage,
  17. bugs,
  18. repository,
  19. funding,
  20. license,
  21. author,
  22. maintainers,
  23. contributors,
  24. type,
  25. imports,
  26. exports,
  27. main,
  28. browser,
  29. types,
  30. bin,
  31. man,
  32. directories,
  33. files,
  34. workspaces,
  35. scripts,
  36. config,
  37. dependencies,
  38. devDependencies,
  39. peerDependencies,
  40. peerDependenciesMeta,
  41. optionalDependencies,
  42. bundledDependencies,
  43. bundleDependencies,
  44. engines,
  45. os,
  46. cpu,
  47. publishConfig,
  48. devEngines,
  49. licenses,
  50. overrides,
  51. ...rest
  52. } = json
  53. return {
  54. ...(typeof name !== 'undefined' ? { name } : {}),
  55. ...(typeof version !== 'undefined' ? { version } : {}),
  56. ...(typeof isPrivate !== 'undefined' ? { private: isPrivate } : {}),
  57. ...(typeof description !== 'undefined' ? { description } : {}),
  58. ...(typeof keywords !== 'undefined' ? { keywords } : {}),
  59. ...(typeof homepage !== 'undefined' ? { homepage } : {}),
  60. ...(typeof bugs !== 'undefined' ? { bugs } : {}),
  61. ...(typeof repository !== 'undefined' ? { repository } : {}),
  62. ...(typeof funding !== 'undefined' ? { funding } : {}),
  63. ...(typeof license !== 'undefined' ? { license } : {}),
  64. ...(typeof author !== 'undefined' ? { author } : {}),
  65. ...(typeof maintainers !== 'undefined' ? { maintainers } : {}),
  66. ...(typeof contributors !== 'undefined' ? { contributors } : {}),
  67. ...(typeof type !== 'undefined' ? { type } : {}),
  68. ...(typeof imports !== 'undefined' ? { imports } : {}),
  69. ...(typeof exports !== 'undefined' ? { exports } : {}),
  70. ...(typeof main !== 'undefined' ? { main } : {}),
  71. ...(typeof browser !== 'undefined' ? { browser } : {}),
  72. ...(typeof types !== 'undefined' ? { types } : {}),
  73. ...(typeof bin !== 'undefined' ? { bin } : {}),
  74. ...(typeof man !== 'undefined' ? { man } : {}),
  75. ...(typeof directories !== 'undefined' ? { directories } : {}),
  76. ...(typeof files !== 'undefined' ? { files } : {}),
  77. ...(typeof workspaces !== 'undefined' ? { workspaces } : {}),
  78. ...(typeof scripts !== 'undefined' ? { scripts } : {}),
  79. ...(typeof config !== 'undefined' ? { config } : {}),
  80. ...(typeof dependencies !== 'undefined' ? { dependencies } : {}),
  81. ...(typeof devDependencies !== 'undefined' ? { devDependencies } : {}),
  82. ...(typeof peerDependencies !== 'undefined' ? { peerDependencies } : {}),
  83. ...(typeof peerDependenciesMeta !== 'undefined' ? { peerDependenciesMeta } : {}),
  84. ...(typeof optionalDependencies !== 'undefined' ? { optionalDependencies } : {}),
  85. ...(typeof bundledDependencies !== 'undefined' ? { bundledDependencies } : {}),
  86. ...(typeof bundleDependencies !== 'undefined' ? { bundleDependencies } : {}),
  87. ...(typeof engines !== 'undefined' ? { engines } : {}),
  88. ...(typeof os !== 'undefined' ? { os } : {}),
  89. ...(typeof cpu !== 'undefined' ? { cpu } : {}),
  90. ...(typeof publishConfig !== 'undefined' ? { publishConfig } : {}),
  91. ...(typeof devEngines !== 'undefined' ? { devEngines } : {}),
  92. ...(typeof licenses !== 'undefined' ? { licenses } : {}),
  93. ...(typeof overrides !== 'undefined' ? { overrides } : {}),
  94. ...rest,
  95. }
  96. }
  97. module.exports = {
  98. packageSort,
  99. }