- 
                Notifications
    
You must be signed in to change notification settings  - Fork 142
 
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 extensibleSo either emitFile isn't supported or buildEnd is using the wrong hook.