-
Notifications
You must be signed in to change notification settings - Fork 136
Open
Labels
Description
Environment
Node: v22.13.1
unplugin: 2.1.2
Reproduction
import { createWebpackPlugin } from 'unplugin';
export default createWebpackPlugin((rawOptions = {}) => {
return {
buildEnd() {
this.emitFile({
fileName: 'test.json',
source: '{}',
type: 'asset',
});
}
};
});
Describe the bug
Not sure if this is a bug or oversight but
unplugin/src/webpack/context.ts
Line 43 in c71bf55
throw new Error('unplugin/webpack: emitFile outside supported hooks (buildStart, buildEnd, load, transform, watchChange)') |
buildEnd is not a supported hook for emitFile, as far as webpack is concerned. The reason is because compilation is sealed before emit which is what buildEnd hooks.
https://github.com/webpack/webpack/blob/f123ce5090e56ce1216debce487e8be25275b896/lib/Compiler.js#L1341
Thus you get
TypeError: Cannot add property test.json, object is not extensible
So either emitFile isn't supported or buildEnd is using the wrong hook.