Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(build)!: Introduce ESM entrypoints (#8091)
* feat(build)!: Introduce ESM entrypoints for chunks Introduce an "import" conditional export for each of the chunk entrypoints (blockly/core, blockly/blocks, blockly/javascript etc.), and point these at wrappers created by build_tasks.js that import the corresponding <chunk>_compressed.js file and export its named exports. BREAKING CHANGE: Importing Blockly via import Blockly from 'blockly/core'; (and similarly for the other chunk entrypoints) has worked until now because most build tools (including Webpack in particular) fuilfil the request for the default export of a CJS module by providing the module.exports object, rather than an explicitly-named default export as they would for an ES module. Since core/blockly.ts (the notional entrypoint for blockly/core) does not provide a default export, the wrappers created by this PR do not either. Code of the above form will therefore break, and should be updated to use a wildcard: import * as Blockly from 'blockly/core'; * feat(build)!: Introduce main package ESM entrypoint Introduce an "import" conditional export for the top-level package entrypoint (blockly), and point it at a wrappers created by build_tasks.js that imports the existing index.js file. BREAKING CHANGE: Importing Blockly via import Blockly from 'blockly'; has worked until now because most build tools (including Webpack in particular) fuilfil the request for the default export of a CJS module by providing the module.exports object, rather than an explicitly-named default export as they would for an ES module. Since core/blockly.ts does not provide a default export, the wrapper created by this PR does not either. Code of the above form will therefore break, and should be updated to use a wildcard: import * as Blockly from 'blockly'; * feat(build)!: Introduce ESM entrypoints for langfiles Introduce an "import" conditional export for each of the langfile entrypoints (msg/en, msg/fr, etc.),, and point them at wrappers created by build_tasks.js that import the existing <lang>.js file. BREAKING CHANGE: Importing languages via import en from 'blockly/msg/en'; has worked until now because most build tools (including Webpack in particular) fuilfil the request for the default export of a CJS module by providing the module.exports object, rather than an explicitly-named default export as they would for an ES module. Code of the above form will therefore break, and should be updated to use a wildcard: import * as en from 'blockly/msg/en'; * fix(typings): Remove bogus .d.ts file. For some reason we had a typings/msg/yue.d.ts that did not correxpond to any msg/json/yue.json. Delete it.
- Loading branch information