UNPKG

yarn-plugin-auto-install

Version:

A yarn (berry) plugin for running `yarn install` automatically.

3 lines (2 loc) 10.6 kB
"use strict";var n={name:"plugin-auto-install",factory:n=>{const t=n("child_process"),e=n("crypto"),c=n("fs"),r=n("path"),o="plugin-auto-install v2.0.7";let i=!1,s="";function a(n){try{const t=e.createHash("sha256"),o=r.join(n.cwd,"yarn.lock");c.statSync(o,{throwIfNoEntry:!1})&&t.update(c.readFileSync(o,"utf8"));for(const e of n.workspaces.map(n=>n.cwd).sort()){const n=r.join(e,"package.json"),o=JSON.parse(c.readFileSync(n,"utf8")),i=Object.keys(o).filter(n=>n.endsWith("ependencies")),s=[];for(const n of i)s.push(...Object.entries(o[n]).map(([n,t])=>`${n}: ${t}`));t.update(s.sort().join(","))}return t.digest("hex")}catch{}}function l(n){try{const t=d(n);return c.readFileSync(r.join(t,"hash"),"utf8")}catch{}}function u(n,t){if(!n||n===s)return!1;try{const e=d(t);c.mkdirSync(e,{recursive:!0}),c.writeFileSync(r.join(e,"hash"),n),c.writeFileSync(r.join(e,".gitignore"),".gitignore\nhash"),console.info(`${o} updated dependency hash: ${n}`),s=n}catch{}return!0}function d(n){return r.join(n.cwd,".yarn","plugins","plugin-auto-install")}return{hooks:{validateProject(n){i=!0;const t=a(n);t&&t===l(n)||u(t,n)},afterAllInstalled(n){i=!1;const t=a(n);t&&t===l(n)||u(t,n)},async setupScriptEnvironment(n,e){if(!i)try{const c=a(n);if(c&&c===l(n))return;if(!u(c,n))return;console.info(`${o} is running 'yarn install' due to dependency changes.`),t.spawnSync("yarn",["install"],{cwd:n.cwd,env:e}),console.info(`${o} finished 'yarn install'.`)}catch{}}}}}};module.exports=n; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnQsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnQsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVybiAqL1xuXG5pbXBvcnQgdHlwZSB7IEhvb2tzLCBQcm9qZWN0IH0gZnJvbSAnQHlhcm5wa2cvY29yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3BsdWdpbi1hdXRvLWluc3RhbGwnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBmYWN0b3J5OiAoaW1wb3J0UGFja2FnZTogKG5hbWU6IHN0cmluZykgPT4gYW55KSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGNvbnN0IGNoaWxkX3Byb2Nlc3MgPSBpbXBvcnRQYWNrYWdlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgY29uc3QgY3J5cHRvID0gaW1wb3J0UGFja2FnZSgnY3J5cHRvJyk7XG4gICAgY29uc3QgZnMgPSBpbXBvcnRQYWNrYWdlKCdmcycpO1xuICAgIGNvbnN0IHBhdGggPSBpbXBvcnRQYWNrYWdlKCdwYXRoJyk7XG5cbiAgICBjb25zdCBwcmVmaXggPSBgcGx1Z2luLWF1dG8taW5zdGFsbCB2JHtwcm9jZXNzLmVudi5WRVJTSU9OfWA7XG4gICAgbGV0IGluc3RhbGxpbmcgPSBmYWxzZTtcbiAgICBsZXQgbGFzdEhhc2ggPSAnJztcblxuICAgIGNvbnN0IGhvb2tzOiBIb29rcyA9IHtcbiAgICAgIHZhbGlkYXRlUHJvamVjdChwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgICAgIGluc3RhbGxpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBoYXNoID0gY2FsY1BhY2thZ2VIYXNoKHByb2plY3QpO1xuICAgICAgICBpZiAoaGFzaCAmJiBoYXNoID09PSByZWFkUGFja2FnZUhhc2gocHJvamVjdCkpIHJldHVybjtcblxuICAgICAgICB3cml0ZVBhY2thZ2VIYXNoKGhhc2gsIHByb2plY3QpO1xuICAgICAgfSxcbiAgICAgIGFmdGVyQWxsSW5zdGFsbGVkKHByb2plY3QpIHtcbiAgICAgICAgaW5zdGFsbGluZyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoYXNoID0gY2FsY1BhY2thZ2VIYXNoKHByb2plY3QpO1xuICAgICAgICBpZiAoaGFzaCAmJiBoYXNoID09PSByZWFkUGFja2FnZUhhc2gocHJvamVjdCkpIHJldHVybjtcblxuICAgICAgICB3cml0ZVBhY2thZ2VIYXNoKGhhc2gsIHByb2plY3QpO1xuICAgICAgfSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICAgICAgYXN5bmMgc2V0dXBTY3JpcHRFbnZpcm9ubWVudChwcm9qZWN0OiBQcm9qZWN0LCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52KSB7XG4gICAgICAgIGlmIChpbnN0YWxsaW5nKSByZXR1cm47XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBoYXNoID0gY2FsY1BhY2thZ2VIYXNoKHByb2plY3QpO1xuICAgICAgICAgIGlmIChoYXNoICYmIGhhc2ggPT09IHJlYWRQYWNrYWdlSGFzaChwcm9qZWN0KSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gVXBkYXRlIGhhc2ggdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgICAgIGlmICghd3JpdGVQYWNrYWdlSGFzaChoYXNoLCBwcm9qZWN0KSkgcmV0dXJuO1xuXG4gICAgICAgICAgLy8gTm90ZTogd2UgY2Fubm90IHByaW50IGFueXRoaW5nIGJlY2F1c2UgeWFybiBwcm9iYWJseSB0YWtlcyBvdmVyIHRoZSBzdGFuZGFyZCBvdXRwdXQuXG4gICAgICAgICAgY29uc29sZS5pbmZvKGAke3ByZWZpeH0gaXMgcnVubmluZyAneWFybiBpbnN0YWxsJyBkdWUgdG8gZGVwZW5kZW5jeSBjaGFuZ2VzLmApO1xuICAgICAgICAgIGNoaWxkX3Byb2Nlc3Muc3Bhd25TeW5jKCd5YXJuJywgWydpbnN0YWxsJ10sIHsgY3dkOiBwcm9qZWN0LmN3ZCwgZW52IH0pO1xuICAgICAgICAgIGNvbnNvbGUuaW5mbyhgJHtwcmVmaXh9IGZpbmlzaGVkICd5YXJuIGluc3RhbGwnLmApO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGNQYWNrYWdlSGFzaChwcm9qZWN0OiBQcm9qZWN0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2Jyk7XG4gICAgICAgIGNvbnN0IHlhcm5Mb2NrRmlsZSA9IHBhdGguam9pbihwcm9qZWN0LmN3ZCwgJ3lhcm4ubG9jaycpO1xuICAgICAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoeWFybkxvY2tGaWxlLCB7IHRocm93SWZOb0VudHJ5OiBmYWxzZSB9KTtcbiAgICAgICAgaWYgKHN0YXQpIHtcbiAgICAgICAgICBoYXNoLnVwZGF0ZShmcy5yZWFkRmlsZVN5bmMoeWFybkxvY2tGaWxlLCAndXRmOCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXNvcnRcbiAgICAgICAgZm9yIChjb25zdCB3b3Jrc3BhY2VQYXRoIG9mIHByb2plY3Qud29ya3NwYWNlcy5tYXAoKHcpID0+IHcuY3dkKS5zb3J0KCkpIHtcbiAgICAgICAgICBjb25zdCBwYWNrYWdlSnNvbkZpbGUgPSBwYXRoLmpvaW4od29ya3NwYWNlUGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGFja2FnZUpzb25GaWxlLCAndXRmOCcpKTtcbiAgICAgICAgICBjb25zdCBkZXBzS2V5cyA9IE9iamVjdC5rZXlzKHBhY2thZ2VKc29uKS5maWx0ZXIoKGtleSkgPT4ga2V5LmVuZHNXaXRoKCdlcGVuZGVuY2llcycpKTtcbiAgICAgICAgICBjb25zdCBkZXBzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGRlcHNLZXlzKSB7XG4gICAgICAgICAgICBkZXBzLnB1c2goLi4uT2JqZWN0LmVudHJpZXMocGFja2FnZUpzb25ba2V5XSkubWFwKChbbmFtZSwgdmVyXSkgPT4gYCR7bmFtZX06ICR7dmVyfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tYXJyYXktc29ydFxuICAgICAgICAgIGhhc2gudXBkYXRlKGRlcHMuc29ydCgpLmpvaW4oJywnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdoZXgnKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZFBhY2thZ2VIYXNoKHByb2plY3Q6IFByb2plY3QpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaGFzaERpciA9IGdldEhhc2hEaXJQYXRoKHByb2plY3QpO1xuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihoYXNoRGlyLCAnaGFzaCcpLCAndXRmOCcpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cml0ZVBhY2thZ2VIYXNoKGhhc2g6IHN0cmluZyB8IHVuZGVmaW5lZCwgcHJvamVjdDogUHJvamVjdCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKCFoYXNoIHx8IGhhc2ggPT09IGxhc3RIYXNoKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGhhc2hEaXIgPSBnZXRIYXNoRGlyUGF0aChwcm9qZWN0KTtcbiAgICAgICAgZnMubWtkaXJTeW5jKGhhc2hEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihoYXNoRGlyLCAnaGFzaCcpLCBoYXNoKTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oaGFzaERpciwgJy5naXRpZ25vcmUnKSwgJy5naXRpZ25vcmVcXG5oYXNoJyk7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgJHtwcmVmaXh9IHVwZGF0ZWQgZGVwZW5kZW5jeSBoYXNoOiAke2hhc2h9YCk7XG4gICAgICAgIGxhc3RIYXNoID0gaGFzaDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRIYXNoRGlyUGF0aChwcm9qZWN0OiBQcm9qZWN0KTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4ocHJvamVjdC5jd2QsICcueWFybicsICdwbHVnaW5zJywgJ3BsdWdpbi1hdXRvLWluc3RhbGwnKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaG9va3MgfTtcbiAgfSxcbn07XG4iXSwibmFtZXMiOlsiaW5kZXgiLCJuYW1lIiwiZmFjdG9yeSIsImltcG9ydFBhY2thZ2UiLCJjaGlsZF9wcm9jZXNzIiwiY3J5cHRvIiwiZnMiLCJwYXRoIiwicHJlZml4IiwiaW5zdGFsbGluZyIsImxhc3RIYXNoIiwiY2FsY1BhY2thZ2VIYXNoIiwicHJvamVjdCIsImhhc2giLCJjcmVhdGVIYXNoIiwieWFybkxvY2tGaWxlIiwiam9pbiIsImN3ZCIsInN0YXRTeW5jIiwidGhyb3dJZk5vRW50cnkiLCJ1cGRhdGUiLCJyZWFkRmlsZVN5bmMiLCJ3b3Jrc3BhY2VQYXRoIiwid29ya3NwYWNlcyIsIm1hcCIsInciLCJzb3J0IiwicGFja2FnZUpzb25GaWxlIiwicGFja2FnZUpzb24iLCJKU09OIiwicGFyc2UiLCJkZXBzS2V5cyIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJrZXkiLCJlbmRzV2l0aCIsImRlcHMiLCJwdXNoIiwiZW50cmllcyIsInZlciIsImRpZ2VzdCIsInJlYWRQYWNrYWdlSGFzaCIsImhhc2hEaXIiLCJnZXRIYXNoRGlyUGF0aCIsIndyaXRlUGFja2FnZUhhc2giLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJ3cml0ZUZpbGVTeW5jIiwiY29uc29sZSIsImluZm8iLCJob29rcyIsInZhbGlkYXRlUHJvamVjdCIsImFmdGVyQWxsSW5zdGFsbGVkIiwic2V0dXBTY3JpcHRFbnZpcm9ubWVudCIsImVudiIsInNwYXduU3luYyJdLCJtYXBwaW5ncyI6ImFBSUEsSUFBQUEsRUFBZSxDQUNiQyxLQUFNLHNCQUVOQyxRQUFVQyxJQUVSLE1BQU1DLEVBQWdCRCxFQUFjLGlCQUM5QkUsRUFBU0YsRUFBYyxVQUN2QkcsRUFBS0gsRUFBYyxNQUNuQkksRUFBT0osRUFBYyxRQUVyQkssRUFBUyw2QkFDZixJQUFJQyxHQUFhLEVBQ2JDLEVBQVcsR0FzQ2YsU0FBU0MsRUFBZ0JDLEdBQ3ZCLElBQ0UsTUFBTUMsRUFBT1IsRUFBT1MsV0FBVyxVQUN6QkMsRUFBZVIsRUFBS1MsS0FBS0osRUFBUUssSUFBSyxhQUMvQlgsRUFBR1ksU0FBU0gsRUFBYyxDQUFFSSxnQkFBZ0IsS0FFdkROLEVBQUtPLE9BQU9kLEVBQUdlLGFBQWFOLEVBQWMsU0FJNUMsSUFBSyxNQUFNTyxLQUFpQlYsRUFBUVcsV0FBV0MsSUFBS0MsR0FBTUEsRUFBRVIsS0FBS1MsT0FBUSxDQUN2RSxNQUFNQyxFQUFrQnBCLEVBQUtTLEtBQUtNLEVBQWUsZ0JBQzNDTSxFQUFjQyxLQUFLQyxNQUFNeEIsRUFBR2UsYUFBYU0sRUFBaUIsU0FDMURJLEVBQVdDLE9BQU9DLEtBQUtMLEdBQWFNLE9BQVFDLEdBQVFBLEVBQUlDLFNBQVMsZ0JBQ2pFQyxFQUFpQixHQUN2QixJQUFLLE1BQU1GLEtBQU9KLEVBQ2hCTSxFQUFLQyxRQUFRTixPQUFPTyxRQUFRWCxFQUFZTyxJQUFNWCxJQUFJLEVBQUV2QixFQUFNdUMsS0FBUyxHQUFHdkMsTUFBU3VDLE1BR2pGM0IsRUFBS08sT0FBT2lCLEVBQUtYLE9BQU9WLEtBQUssS0FDL0IsQ0FDQSxPQUFPSCxFQUFLNEIsT0FBTyxNQUNyQixDQUFFLE1BQ0EsQ0FFSixDQUVBLFNBQVNDLEVBQWdCOUIsR0FDdkIsSUFDRSxNQUFNK0IsRUFBVUMsRUFBZWhDLEdBQy9CLE9BQU9OLEVBQUdlLGFBQWFkLEVBQUtTLEtBQUsyQixFQUFTLFFBQVMsT0FDckQsQ0FBRSxNQUNBLENBRUosQ0FFQSxTQUFTRSxFQUFpQmhDLEVBQTBCRCxHQUNsRCxJQUFLQyxHQUFRQSxJQUFTSCxFQUFVLE9BQU8sRUFFdkMsSUFDRSxNQUFNaUMsRUFBVUMsRUFBZWhDLEdBQy9CTixFQUFHd0MsVUFBVUgsRUFBUyxDQUFFSSxXQUFXLElBQ25DekMsRUFBRzBDLGNBQWN6QyxFQUFLUyxLQUFLMkIsRUFBUyxRQUFTOUIsR0FDN0NQLEVBQUcwQyxjQUFjekMsRUFBS1MsS0FBSzJCLEVBQVMsY0FBZSxvQkFDbkRNLFFBQVFDLEtBQUssR0FBRzFDLDhCQUFtQ0ssS0FDbkRILEVBQVdHLENBQ2IsQ0FBRSxNQUNBLENBRUYsT0FBTyxDQUNULENBRUEsU0FBUytCLEVBQWVoQyxHQUN0QixPQUFPTCxFQUFLUyxLQUFLSixFQUFRSyxJQUFLLFFBQVMsVUFBVyxzQkFDcEQsQ0FDQSxNQUFPLENBQUVrQyxNQTNGWSxDQUNuQkMsZUFBQUEsQ0FBZ0J4QyxHQUNkSCxHQUFhLEVBQ2IsTUFBTUksRUFBT0YsRUFBZ0JDLEdBQ3pCQyxHQUFRQSxJQUFTNkIsRUFBZ0I5QixJQUVyQ2lDLEVBQWlCaEMsRUFBTUQsRUFDekIsRUFDQXlDLGlCQUFBQSxDQUFrQnpDLEdBQ2hCSCxHQUFhLEVBQ2IsTUFBTUksRUFBT0YsRUFBZ0JDLEdBQ3pCQyxHQUFRQSxJQUFTNkIsRUFBZ0I5QixJQUVyQ2lDLEVBQWlCaEMsRUFBTUQsRUFDekIsRUFFQSw0QkFBTTBDLENBQXVCMUMsRUFBa0IyQyxHQUM3QyxJQUFJOUMsRUFFSixJQUNFLE1BQU1JLEVBQU9GLEVBQWdCQyxHQUM3QixHQUFJQyxHQUFRQSxJQUFTNkIsRUFBZ0I5QixHQUFVLE9BRy9DLElBQUtpQyxFQUFpQmhDLEVBQU1ELEdBQVUsT0FHdENxQyxRQUFRQyxLQUFLLEdBQUcxQywwREFDaEJKLEVBQWNvRCxVQUFVLE9BQVEsQ0FBQyxXQUFZLENBQUV2QyxJQUFLTCxFQUFRSyxJQUFLc0MsUUFDakVOLFFBQVFDLEtBQUssR0FBRzFDLDZCQUNsQixDQUFFLE1BQ0EsQ0FFSiJ9