mirror of
https://github.com/facebook/lexical.git
synced 2025-08-06 16:39:33 +08:00
Generate default entry in package.json exports last & use .mjs for esm modules (#5737)
This commit is contained in:
@ -55,7 +55,19 @@ function updateVersion() {
|
||||
}
|
||||
|
||||
function withEsmExtension(fileName) {
|
||||
return fileName.replace(/\.js$/, '.esm.js');
|
||||
return fileName.replace(/\.js$/, '.mjs');
|
||||
}
|
||||
|
||||
function exportEntry(file) {
|
||||
return {
|
||||
import: {
|
||||
types: `./${file.replace(/\.js$/, '.d.ts')}`,
|
||||
// webpack requires default to be the last entry per #5731
|
||||
// eslint-disable-next-line sort-keys-fix/sort-keys-fix
|
||||
default: `./${withEsmExtension(file)}`,
|
||||
},
|
||||
require: `./${file}`,
|
||||
};
|
||||
}
|
||||
|
||||
function updateModule(packageJSON, pkg) {
|
||||
@ -68,23 +80,12 @@ function updateModule(packageJSON, pkg) {
|
||||
const exports = {};
|
||||
for (const file of fs.readdirSync(`./packages/${pkg}/dist`)) {
|
||||
if (/^[^.]+\.js$/.test(file)) {
|
||||
const entry = exportEntry(file);
|
||||
// support for import "@lexical/react/LexicalComposer"
|
||||
exports[`./${file.replace(/\.js$/, '')}`] = {
|
||||
import: {
|
||||
default: `./${withEsmExtension(file)}`,
|
||||
types: `./${file.replace(/\.js$/, '.d.ts')}`,
|
||||
},
|
||||
require: `./${file}`,
|
||||
};
|
||||
exports[`./${file.replace(/\.js$/, '')}`] = entry;
|
||||
// support for import "@lexical/react/LexicalComposer.js"
|
||||
// @mdxeditor/editor uses this at least as of 2.13.1
|
||||
exports[`./${file}`] = {
|
||||
import: {
|
||||
default: `./${withEsmExtension(file)}`,
|
||||
types: `./${file.replace(/\.js$/, '.d.ts')}`,
|
||||
},
|
||||
require: `./${file}`,
|
||||
};
|
||||
exports[`./${file}`] = entry;
|
||||
}
|
||||
}
|
||||
packageJSON.exports = exports;
|
||||
|
Reference in New Issue
Block a user