Use ESM entrypoint for require(ESM) (#16958)
Co-authored-by: fisker Cheung <lionkay@gmail.com>
This commit is contained in:
1 parent
97d8115d18
commit
b64b0a88ba
3 files changed
+10
-1
No files matched your search
@@ -0,0 +1,5 @@
|
|||||||
|
#### Use ESM entrypoint for `require(ESM)` (#16958 by @tats-u)
|
||||||
|
|
||||||
|
Node.js 22.12 or later [can (experimentally) load ESM modules with `require` function](https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require) without runtime flags. This change enables `require` to load Prettier without the CommonJS entrypoint with almost only the ability to import the ESM entrypoint.
|
||||||
|
|
||||||
|
The feature to load ES modules with `require` is not completely stable but can be used without ExperimentalWarning as of Node 22.13.
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
"exports": {
|
"exports": {
|
||||||
".": {
|
".": {
|
||||||
"types": "./src/index.d.ts",
|
"types": "./src/index.d.ts",
|
||||||
|
"module-sync": "./src/index.js",
|
||||||
"require": "./src/index.cjs",
|
"require": "./src/index.cjs",
|
||||||
"default": "./src/index.js"
|
"default": "./src/index.js"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ async function buildPackageJson({ file, files }) {
|
|||||||
exports: {
|
exports: {
|
||||||
".": {
|
".": {
|
||||||
types: "./index.d.ts",
|
types: "./index.d.ts",
|
||||||
|
"module-sync": "./index.mjs",
|
||||||
require: "./index.cjs",
|
require: "./index.cjs",
|
||||||
browser: {
|
browser: {
|
||||||
import: "./standalone.mjs",
|
import: "./standalone.mjs",
|
||||||
@@ -55,12 +56,14 @@ async function buildPackageJson({ file, files }) {
|
|||||||
.filter((file) => file.output.format === "umd")
|
.filter((file) => file.output.format === "umd")
|
||||||
.map((file) => {
|
.map((file) => {
|
||||||
const basename = path.basename(file.output.file, ".js");
|
const basename = path.basename(file.output.file, ".js");
|
||||||
|
const mjsPath = `./${file.output.file.replace(/\.js$/u, ".mjs")}`;
|
||||||
return [
|
return [
|
||||||
file.isPlugin ? `./plugins/${basename}` : `./${basename}`,
|
file.isPlugin ? `./plugins/${basename}` : `./${basename}`,
|
||||||
{
|
{
|
||||||
types: `./${file.output.file.replace(/\.js$/u, ".d.ts")}`,
|
types: `./${file.output.file.replace(/\.js$/u, ".d.ts")}`,
|
||||||
|
"module-sync": mjsPath,
|
||||||
require: `./${file.output.file}`,
|
require: `./${file.output.file}`,
|
||||||
default: `./${file.output.file.replace(/\.js$/u, ".mjs")}`,
|
default: mjsPath,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
|
|||||||
Reference in new issue
Block a user