index.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const fs_1 = __importDefault(require("fs"));
  7. const path_1 = __importDefault(require("path"));
  8. const read_pkg_1 = require("../read-pkg");
  9. const hookList = {
  10. applypatchmsg: 'applypatch-msg',
  11. commitmsg: 'commit-msg',
  12. postapplypatch: 'post-applypatch',
  13. postcheckout: 'post-checkout',
  14. postcommit: 'post-commit',
  15. postmerge: 'post-merge',
  16. postreceive: 'post-receive',
  17. postrewrite: 'post-rewrite',
  18. postupdate: 'post-update',
  19. preapplypatch: 'pre-applypatch',
  20. preautogc: 'pre-auto-gc',
  21. precommit: 'pre-commit',
  22. premergecommit: 'pre-merge-commit',
  23. preparecommitmsg: 'prepare-commit-msg',
  24. prepush: 'pre-push',
  25. prerebase: 'pre-rebase',
  26. prereceive: 'pre-receive',
  27. pushtocheckout: 'push-to-checkout',
  28. sendemailvalidate: 'sendemail-validate',
  29. update: 'update',
  30. };
  31. function upgrade(cwd) {
  32. const pkgFile = path_1.default.join(cwd, 'package.json');
  33. if (fs_1.default.existsSync(pkgFile)) {
  34. const pkg = read_pkg_1.readPkg(cwd);
  35. console.log(`husky > upgrading ${pkgFile}`);
  36. // Don't overwrite 'husky' field if it exists
  37. if (pkg.husky) {
  38. return console.log(`husky field in package.json isn't empty, skipping automatic upgrade`);
  39. }
  40. const hooks = {};
  41. // Find hooks in package.json 'scripts' field
  42. Object.keys(hookList).forEach((name) => {
  43. if (pkg.scripts) {
  44. const script = pkg.scripts[name];
  45. if (script) {
  46. delete pkg.scripts[name];
  47. const newName = hookList[name];
  48. hooks[newName] = script.replace(/\bGIT_PARAMS\b/g, 'HUSKY_GIT_PARAMS');
  49. console.log(`moved scripts.${name} to husky.hooks.${newName}`);
  50. }
  51. }
  52. });
  53. // Move found hooks to 'husky.hooks' field
  54. if (Object.keys(hooks).length) {
  55. pkg.husky = { hooks };
  56. }
  57. else {
  58. console.log('no hooks found');
  59. }
  60. // Update package.json
  61. fs_1.default.writeFileSync(pkgFile, `${JSON.stringify(pkg, null, 2)}\n`, 'utf-8');
  62. console.log(`husky > done`);
  63. }
  64. }
  65. exports.default = upgrade;