* Rename `types` to `thirs-party-types` * Copy `index.d.ts` from `@types/prettier` * Make public APIs async * Add missing `formatAST` * Fix `CustomParser` * Fix `Parser.parse` signature * Add comment * Add `standalonw.d.ts` * first implement * Fix path * Add missing parser `.d.ts` * Fix * Fix path * Introduce valid tests * Add unit tests for dts files * Add unit tests * Simplify unit testing * Tweaks structures * Revert needless change * Fix types path * Introduce `ts-expect` * Fix doc utils api * Add AstPath API * Fix API * Fix tests * Fix changelog * Move dts * Update module specifiers * Remove generate dts config file * Update build scripts * Fix type errors * Refactor with namespace imports * Update comments * Fix build script * Improve build script * `typing` -> `types` * Clean up * Minor tweak * Minor tweak * Modify `exports` field * Fix paths in builder * Refactor * Refactor * Address review * Update changelog * Address reviews * Remove `since` from tests * Improve utils type def * Mark deprecated methods * Address review * Move docs types * Address review * Update c8 config * Minor tweak --------- Co-authored-by: fisker Cheung <lionkay@gmail.com>
83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
import path from "node:path";
|
|
import {
|
|
PROJECT_ROOT,
|
|
DIST_DIR,
|
|
readJson,
|
|
writeJson,
|
|
} from "../utils/index.mjs";
|
|
|
|
async function buildPackageJson({ file, files }) {
|
|
const packageJson = await readJson(path.join(PROJECT_ROOT, file.input));
|
|
|
|
const bin = files.find(
|
|
(file) =>
|
|
path.join(PROJECT_ROOT, packageJson.bin) ===
|
|
path.join(PROJECT_ROOT, file.input)
|
|
).output.file;
|
|
|
|
packageJson.bin = `./${bin}`;
|
|
packageJson.main = "./index.cjs";
|
|
packageJson.exports = {
|
|
".": {
|
|
require: "./index.cjs",
|
|
types: "./index.d.ts",
|
|
default: "./index.mjs",
|
|
},
|
|
"./*": "./*",
|
|
...Object.fromEntries(
|
|
files
|
|
.filter((file) => file.output.format === "umd")
|
|
.map((file) => {
|
|
const basename = path.basename(file.output.file, ".js");
|
|
return [
|
|
file.isPlugin ? `./plugins/${basename}` : `./${basename}`,
|
|
{
|
|
require: `./${file.output.file}`,
|
|
types: `./${file.output.file.replace(/\.js$/, ".d.ts")}`,
|
|
default: `./${file.output.file.replace(/\.js$/, ".mjs")}`,
|
|
},
|
|
];
|
|
})
|
|
),
|
|
// Legacy entries
|
|
// TODO: Remove bellow in v4
|
|
"./esm/standalone.mjs": "./standalone.mjs",
|
|
...Object.fromEntries(
|
|
files
|
|
.filter((file) => file.isPlugin && file.output.format === "umd")
|
|
.flatMap((file) => {
|
|
let basename = path.basename(file.output.file, ".js");
|
|
if (basename === "acorn-and-espree") {
|
|
basename = "espree";
|
|
}
|
|
return [
|
|
[`./parser-${basename}`, `./${file.output.file}`],
|
|
[`./parser-${basename}.js`, `./${file.output.file}`],
|
|
[
|
|
`./esm/parser-${basename}.mjs`,
|
|
`./${file.output.file.replace(/\.js$/, ".mjs")}`,
|
|
],
|
|
];
|
|
})
|
|
),
|
|
};
|
|
// https://github.com/prettier/prettier/pull/13118#discussion_r922708068
|
|
packageJson.engines.node = ">=14";
|
|
delete packageJson.dependencies;
|
|
delete packageJson.devDependencies;
|
|
delete packageJson.browserslist;
|
|
delete packageJson.type;
|
|
delete packageJson.c8;
|
|
delete packageJson.packageManager;
|
|
delete packageJson.resolutions;
|
|
packageJson.scripts = {
|
|
prepublishOnly:
|
|
"node -e \"assert.equal(require('.').version, require('..').version)\"",
|
|
};
|
|
packageJson.files = files.map(({ output: { file } }) => file).sort();
|
|
|
|
await writeJson(path.join(DIST_DIR, file.output.file), packageJson);
|
|
}
|
|
|
|
export default buildPackageJson;
|