Files
test-repo/scripts/build/build-package-json.js
T
SUZUKI Sosukeandfisker Cheung 813df18df6 Moves @types/prettier to this repository (#14212)
* 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>
2023-02-23 22:15:18 +09:00

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;