mirror of
https://github.com/marko-js/marko.git
synced 2026-02-01 16:07:13 +00:00
chore: refactor compiler type build scripts to happen on install (#2128)
This commit is contained in:
parent
a541ab394d
commit
94de01ad64
@ -7,7 +7,7 @@
|
||||
"scripts": {
|
||||
"build": "npm run build --ws && npm run build:types",
|
||||
"build:sizes": "npm run build --ws && node -r ~ts scripts/sizes.ts",
|
||||
"build:types": "npm run build:types --ws --if-present && tsc -b tsconfig.build.json",
|
||||
"build:types": "tsc -b tsconfig.build.json",
|
||||
"change": "changeset add",
|
||||
"ci:test": "cross-env NODE_OPTIONS=\"--max-old-space-size=4096\" MARKO_DEBUG=1 c8 npm test",
|
||||
"format": "npm run lint:eslint -- --fix && npm run lint:prettier -- --write",
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
"index.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "babel ./src --out-dir ./dist --delete-dir-on-start --copy-files --config-file ../../babel.config.js --env-name=production"
|
||||
"build": "babel ./src --out-dir ./dist --copy-files --config-file ../../babel.config.js --env-name=production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
|
||||
@ -67,8 +67,8 @@
|
||||
"register.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "babel ./src --out-dir ./dist --delete-dir-on-start --copy-files --config-file ../../babel.config.js --env-name=production",
|
||||
"build:types": "node scripts/types-babel-types.mjs > ./dist/types.d.ts && node scripts/types-babel-traverse.js > ./dist/traverse.d.ts"
|
||||
"build": "babel ./src --out-dir ./dist --copy-files --config-file ../../babel.config.js --env-name=production",
|
||||
"prepare": "node -r ~ts scripts/types"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.23.5",
|
||||
|
||||
8
packages/compiler/scripts/types.js
Normal file
8
packages/compiler/scripts/types.js
Normal file
@ -0,0 +1,8 @@
|
||||
import "../src/babel-types/types/patch";
|
||||
import fs from "fs";
|
||||
import babelTraverseCode from "./types/babel-traverse";
|
||||
import babelTypesCode from "./types/babel-types";
|
||||
|
||||
fs.mkdirSync("dist", { recursive: true });
|
||||
fs.writeFileSync("dist/types.d.ts", babelTypesCode);
|
||||
fs.writeFileSync("dist/traverse.d.ts", babelTraverseCode);
|
||||
@ -26,9 +26,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
***********************************************************************************************/
|
||||
|
||||
const fs = require("fs");
|
||||
require("../dist/babel-types/types/patch");
|
||||
const { MARKO_TYPES } = require("../dist/babel-types/types/definitions");
|
||||
import fs from "fs";
|
||||
import { MARKO_TYPES } from "../../src/babel-types/types/definitions";
|
||||
|
||||
const HUB_INTERFACE = "export interface HubInterface {";
|
||||
const HUB_CLASS =
|
||||
@ -43,27 +42,23 @@ const ASSERT =
|
||||
"// #region ------------------------- assertXXX -------------------------";
|
||||
const BREAK = "\n ";
|
||||
|
||||
fs.readFile(
|
||||
const data = fs.readFileSync(
|
||||
require.resolve("@types/babel__traverse/index.d.ts"),
|
||||
"utf8",
|
||||
(err, data) => {
|
||||
if (err) return console.error(err);
|
||||
|
||||
[HUB_INTERFACE, HUB_CLASS, IMPORT, EXPORT_NODE, IS, ASSERT].forEach(
|
||||
(str) => {
|
||||
if (data.indexOf(str) === -1) {
|
||||
console.error(
|
||||
`Unable to find \`${str}\` in @types/babel__traverse/index.d.ts`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
},
|
||||
);
|
||||
[HUB_INTERFACE, HUB_CLASS, IMPORT, EXPORT_NODE, IS, ASSERT].forEach((str) => {
|
||||
if (data.indexOf(str) === -1) {
|
||||
console.error(
|
||||
`Unable to find \`${str}\` in @types/babel__traverse/index.d.ts`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
var result = data
|
||||
.replace(
|
||||
HUB_INTERFACE,
|
||||
`export interface BabelFile {
|
||||
var result = data
|
||||
.replace(
|
||||
HUB_INTERFACE,
|
||||
`export interface BabelFile {
|
||||
ast: t.File,
|
||||
path: NodePath<t.Program>,
|
||||
hub: HubInterface,
|
||||
@ -77,32 +72,30 @@ fs.readFile(
|
||||
|
||||
${HUB_INTERFACE}
|
||||
file: BabelFile;`,
|
||||
)
|
||||
.replace(
|
||||
HUB_CLASS,
|
||||
`${HUB_CLASS}
|
||||
)
|
||||
.replace(
|
||||
HUB_CLASS,
|
||||
`${HUB_CLASS}
|
||||
file: BabelFile;`,
|
||||
)
|
||||
.replace(IMPORT, `import * as t from './types'`)
|
||||
.replace(EXPORT_NODE, "type Node = t.Node")
|
||||
.replace(NODE_PATH_GET, "")
|
||||
.replace(
|
||||
IS,
|
||||
IS +
|
||||
BREAK +
|
||||
MARKO_TYPES.map(
|
||||
(t) => `is${t}(opts?: object | null): this is NodePath<t.${t}>;`,
|
||||
).join(BREAK),
|
||||
)
|
||||
.replace(
|
||||
ASSERT,
|
||||
ASSERT +
|
||||
BREAK +
|
||||
MARKO_TYPES.map(
|
||||
(t) => `assert${t}(opts?: object | null): void;`,
|
||||
).join(BREAK),
|
||||
);
|
||||
)
|
||||
.replace(IMPORT, `import * as t from './types'`)
|
||||
.replace(EXPORT_NODE, "type Node = t.Node")
|
||||
.replace(NODE_PATH_GET, "")
|
||||
.replace(
|
||||
IS,
|
||||
IS +
|
||||
BREAK +
|
||||
MARKO_TYPES.map(
|
||||
(t) => `is${t}(opts?: object | null): this is NodePath<t.${t}>;`,
|
||||
).join(BREAK),
|
||||
)
|
||||
.replace(
|
||||
ASSERT,
|
||||
ASSERT +
|
||||
BREAK +
|
||||
MARKO_TYPES.map((t) => `assert${t}(opts?: object | null): void;`).join(
|
||||
BREAK,
|
||||
),
|
||||
);
|
||||
|
||||
process.stdout.write(result);
|
||||
},
|
||||
);
|
||||
export default result;
|
||||
@ -26,7 +26,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
***********************************************************************************************/
|
||||
|
||||
import "../dist/babel-types/types/patch.js";
|
||||
import * as t from "@babel/types";
|
||||
|
||||
let code = `// NOTE: This file is autogenerated. Do not modify.
|
||||
@ -371,7 +370,7 @@ code += lines.join("\n") + "\n";
|
||||
|
||||
//
|
||||
|
||||
process.stdout.write(code);
|
||||
export default code;
|
||||
|
||||
//
|
||||
|
||||
@ -61,7 +61,7 @@
|
||||
"tags-html.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "babel ./src --out-dir ./dist --delete-dir-on-start --copy-files --config-file ../../babel.config.js --env-name=production"
|
||||
"build": "babel ./src --out-dir ./dist --copy-files --config-file ../../babel.config.js --env-name=production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@marko/compiler": "^5.34.7",
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
"index.d.ts"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "babel ./src --out-dir ./dist --delete-dir-on-start --copy-files --config-file ../../babel.config.js --env-name=production"
|
||||
"build": "babel ./src --out-dir ./dist --copy-files --config-file ../../babel.config.js --env-name=production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.23.9",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user