73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
import path from "node:path";
|
|
|
|
function generatePackageJson(packageJson, { packageConfig }) {
|
|
const files = packageConfig.modules.flatMap((module) => module.files);
|
|
|
|
return {
|
|
...packageJson,
|
|
main: "./index.cjs",
|
|
exports: {
|
|
".": {
|
|
types: "./index.d.ts",
|
|
require: "./index.cjs",
|
|
browser: {
|
|
import: "./standalone.mjs",
|
|
default: "./standalone.js",
|
|
},
|
|
default: "./index.mjs",
|
|
},
|
|
"./*": "./*",
|
|
...Object.fromEntries(
|
|
files
|
|
.filter((file) => file.output.endsWith(".js"))
|
|
.map((file) => {
|
|
const basename = path.basename(file.output, ".js");
|
|
const isPlugin = file.output.startsWith("plugins/");
|
|
return [
|
|
isPlugin ? `./plugins/${basename}` : `./${basename}`,
|
|
{
|
|
types: `./${file.output.replace(/\.js$/, ".d.ts")}`,
|
|
// `module-sync` condition can prevent CJS plugins from working: https://github.com/prettier/prettier/issues/17139
|
|
// Perform a test before re-adding it.
|
|
require: `./${file.output}`,
|
|
default: `./${file.output.replace(/\.js$/, ".mjs")}`,
|
|
},
|
|
];
|
|
}),
|
|
),
|
|
// Legacy entries
|
|
// TODO: Remove bellow in v4
|
|
"./esm/standalone.mjs": "./standalone.mjs",
|
|
...Object.fromEntries(
|
|
files
|
|
.filter(
|
|
(file) =>
|
|
file.output.startsWith("plugins/") &&
|
|
file.output.endsWith(".js") &&
|
|
file.output !== "plugins/estree.js",
|
|
)
|
|
.flatMap((file) => {
|
|
let basename = path.basename(file.output, ".js");
|
|
if (basename === "acorn") {
|
|
basename = "espree";
|
|
}
|
|
return [
|
|
[`./parser-${basename}`, `./${file.output}`],
|
|
[`./parser-${basename}.js`, `./${file.output}`],
|
|
[
|
|
`./esm/parser-${basename}.mjs`,
|
|
`./${file.output.replace(/\.js$/, ".mjs")}`,
|
|
],
|
|
];
|
|
}),
|
|
),
|
|
},
|
|
scripts: {
|
|
prepublishOnly:
|
|
"node -e \"assert.equal(require('.').version, require('..').version)\"",
|
|
},
|
|
};
|
|
}
|
|
|
|
export { generatePackageJson };
|