Skip to content

Commit 2f87366

Browse files
committed
feat: allow mjs, js and cjs hooks
1 parent d38e84d commit 2f87366

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

index.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@ var util = require('util');
1919
var mkdirp = require('mkdirp');
2020
var glob = require('glob');
2121

22-
function generateHookName(pkg, hook) {
22+
function getExtension(hook) {
23+
return path.extname(hook.script) || '.mjs';
24+
}
25+
26+
function generateHookName(pkg, hook, hookExtension) {
2327
// flatten scoped packages to names
24-
return ((hook.name || pkg.name).replace(/@/ig, '').replace(/\//ig, '-')) + '.mjs';
28+
return ((hook.name || pkg.name).replace(/@/ig, '').replace(/\//ig, '-')) + hookExtension;
2529
}
2630

2731
function findProjectDir(pkgdir) {
@@ -97,12 +101,17 @@ function postinstall(pkgdir) {
97101
console.log(`Hook already installed: ${pkg.name} at location: ${hookDir}`);
98102
return;
99103
}
100-
var hookFileName = generateHookName(pkg, hook);
104+
var hookExtension = getExtension(hook);
105+
var hookFileName = generateHookName(pkg, hook, hookExtension);
101106
var hookPath = path.join(hookDir, hookFileName);
102107

108+
var trampoline = '';
109+
if (hookExtension === '.mjs') {
103110
var trampoline = `import hooks from "${pkg.name}/${hook.script}";
104-
105111
export default hooks;`
112+
} else if (['.js', '.cjs'].includes(hookExtension)) {
113+
trampoline = util.format('%srequire("%s/%s");', hook.inject ? 'module.exports = ' : '', pkg.name, hook.script);
114+
}
106115

107116
fs.writeFileSync(hookPath, trampoline + os.EOL);
108117
});
@@ -111,7 +120,8 @@ export default hooks;`
111120
function preuninstall(pkgdir) {
112121
forEachHook(pkgdir, function (hooksDir, pkg, hook) {
113122
var hookDir = path.join(hooksDir, hook.type);
114-
var hookFileName = generateHookName(pkg, hook);
123+
var hookExtension = getExtension(hook);
124+
var hookFileName = generateHookName(pkg, hook, hookExtension);
115125
var hookPath = path.join(hookDir, hookFileName);
116126

117127
try {

0 commit comments

Comments
 (0)