#1079 | 2022-09-01 13:31:22

https://github.com/lukeed/clsx/blob/master/bin/index.js

可能是最简单的JS包导出不同规范(ES Module/CommonJS/UMD)的方法。。

// input is like
function clsx () {}
export default clsx;

// copy for ESM
write(pkg.module, input);

// transform ESM -> CJS exports
write(pkg.main, input.replace('export function', 'function').replace(
  'export default clsx;',
  'module.exports = clsx;\n'
  + 'module.exports.clsx = clsx;'
));

// transform ESM -> UMD exports
input = input.replace('export function', 'function').replace('export default clsx;', 'return clsx.clsx=clsx, clsx;');
write(pkg.unpkg, '!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.clsx=factory()}(this,function(){' + input + '});');