Spaces:
Sleeping
Sleeping
| Multiple things attempted when trying to add icons to the bundle. | |
| None of this worked - eventually just prepended text on emit instead. | |
| ```javascript | |
| // compilation.hooks.processAssets.tap( | |
| // { | |
| // name: 'AddImportPlugin', | |
| // stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, | |
| // }, | |
| // (assets) => { | |
| // for (const assetName of Object.keys(assets)) { | |
| // if (assetName.endsWith('.js')) { | |
| // const source = assets[assetName].source(); | |
| // const newSource = `${icons}\n${source}`; | |
| // compilation.updateAsset(assetName, new compiler.webpack.sources.RawSource(newSource)); | |
| // } | |
| // } | |
| // } | |
| // ); | |
| // Inject into bundle | |
| // console.log('adding this:' + icons); | |
| // compilation.assets['icons-thing'] = { | |
| // source: () => icons, | |
| // size: () => icons.length, | |
| // }; | |
| // compilation.addModule({ | |
| // identifier() { | |
| // return 'icons-thing'; | |
| // }, | |
| // build() { | |
| // this._source = { | |
| // source() { | |
| // return content; | |
| // }, | |
| // size() { | |
| // return content.length; | |
| // } | |
| // }; | |
| // } | |
| // }); | |
| // Add the generated module to Webpack's internal modules | |
| // compilation.hooks.optimizeModules.tap('IconsPlugin', (modules) => { | |
| // const virtualModule = { | |
| // identifier: () => 'icons.js', | |
| // readableIdentifier: () => 'icons.js', | |
| // build: () => {}, | |
| // source: () => icons, | |
| // size: () => icons.length, | |
| // chunks: [], | |
| // assets: [], | |
| // hash: () => 'icons', | |
| // }; | |
| // modules.push(virtualModule); | |
| // }); | |
| }); | |
| // this.hooks.entryOption.tap('IconsPlugin', (context, entry) => { | |
| // entry.main.import.push('icons-thing'); | |
| // }); | |
| // this.hooks.make.tapAsync('InjectTextEntryPlugin', (compilation, callback) => { | |
| // // Create a new asset (fake module) from the generated content | |
| // const content = `console.log('${this.options.text}');`; | |
| // callback(); | |
| // }); | |
| // this.hooks.entryOption.tap('IconsPlugin', (context, entry) => { | |
| // }); | |
| // this.hooks.entryOption.tap('InjectTextEntryPlugin', (context, entry) => { | |
| // // Add this as an additional entry point | |
| // this.options.entry = { | |
| // ...this.options.entry, | |
| // 'generated-entry': '// FINDME\n' | |
| // }; | |
| // }); | |
| ``` |