alphaTab icon indicating copy to clipboard operation
alphaTab copied to clipboard

Full WebPack support

Open Danielku15 opened this issue 6 months ago • 0 comments

The general goal of this item is to add full WebPack support to alphaTab with minimum to zero configuration. This includes following aspects

  • The alphaTab WebWorkers MUST be able to lauch correctly
  • The alphaTab Audio Worklets MUST be able to launch correctly
  • The codebase in alphaTab SHOULD not need WebPack specific code but the same code should work for all bundlers.
  • Circular references between the different chunks SHOULD be avoided.
  • Examples and Documentation for direct usage in WebPack MUST be available
  • Examples and Documentation for usage via Angular MUST be available
  • Examples and Documentation for usage via React MUST be available

Current envisioned design:

  • File Structure:
    • AlphaTab.core.mjs - holds the main application code which is shared accross the main browser thread and web workers. It exposes the different initialization codes for UI, webworker and audio worklets.
    • AlphaTab.mjs - The main browser entry point. It imports AlphaTab.core and initializes it with an implementation for launching webworkers and audio worklets using the other files.
    • AlphaTab.worker.mjs - The web worker entry point. It imports AlphaTab.core and initializes it with an implementation for launching webworkers and audio worklets throwing an error that no nested workers can be launched. (as we don't need nesting for now). *AlphaTab.worklet.mjs - The audio worklet entry point. It imports AlphaTab.core and initializes it with an implementation for launching webworkers and audio worklets throwing an error that no nested workers can be launched. (as we don't need nesting for now).
    • AlphaTab.js - An all-in-one bundled (UMD) version of alphaTab not intended for further bundling.
    • AlphaTab.webpack.js - A WebPack plugin taking care of the webpack bundler specific bits with alphaTab as WebPack doesn't has built-in support for everything. (e.g. audio worklets which further import items).

Danielku15 avatar Jan 21 '24 11:01 Danielku15