@roots/bud-extensions
Version:
bud.js core module
37 lines (36 loc) • 1.23 kB
JavaScript
import { __decorate } from "tslib";
import { Extension } from '@roots/bud-framework/extension';
import { disabled, expose, label, } from '@roots/bud-framework/extension/decorators';
import isUndefined from '@roots/bud-support/isUndefined';
/**
* ESM output configuration
*/
let Esm = class Esm extends Extension {
/**
* {@link Extension.buildBefore}
*/
async buildBefore(bud) {
bud.hooks
.fromMap({
'build.experiments': (experiments = {}) => ({
...experiments,
outputModule: true,
}),
'build.output.module': true,
})
.when(() => !isUndefined(bud.context.manifest?.imports), ({ hooks }) => hooks.on(`build.externals`, externals => ({
...(externals ?? {}),
...bud.context.manifest.imports,
})))
.when(bud.extensions.get(`@roots/bud-extensions/html-webpack-plugin`)
.isEnabled, ({ extensions }) => extensions
.get(`@roots/bud-extensions/html-webpack-plugin`)
.set(`scriptLoading`, `module`));
}
};
Esm = __decorate([
label(`@roots/bud-extensions/esm`),
expose(`esm`),
disabled
], Esm);
export default Esm;