Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: package.json transformer #398

Merged
merged 6 commits into from
Sep 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions boilerplates/authjs/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { addDependency, loadAsJson, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
dependencies: ["@auth/core", "@universal-middleware/core"],
});
return packageJson.addDependencies(["@auth/core", "@universal-middleware/core"]);
}
48 changes: 15 additions & 33 deletions boilerplates/aws/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,45 +1,27 @@
import { addDependency, loadAsJson, setScripts, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

setScripts(packageJson, {
test: {
return packageJson
.setScript("test", {
value: "vitest",
precedence: 0,
},
"deploy:cdk": {
value: "cdk",
precedence: 0,
},
"deploy:cdk-deploy-all": {
})
.setScript("deploy:cdk-deploy-all", {
value: "cdk deploy --all",
precedence: 0,
},
"deploy:aws": {
})
.setScript("deploy:aws", {
value: "run-s build deploy:cdk-deploy-all",
precedence: 0,
},
// @ts-ignore
"cdk:app": {
})
.setScript("cdk:app", {
value: "tsx cdk/bin/infrastructure.ts",
precedence: 0,
},
});

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: [
"cdk",
"aws-cdk",
"npm-run-all2",
"@types/node",
"tsx",
"typescript",
"esbuild",
"vitest",
"which",
"@types/which",
],
dependencies: ["aws-cdk-lib", "constructs", "source-map-support"],
});
})
.addDependencies(["aws-cdk-lib", "constructs", "source-map-support"])
.addDevDependencies(["cdk", "aws-cdk", "@types/node", "@types/which", "typescript", "esbuild", "vitest", "which"])
.addDevDependencies(["npm-run-all2"], ["deploy:aws"])
.addDevDependencies(["tsx"], ["cdk:app"]);
}
2 changes: 1 addition & 1 deletion boilerplates/aws/files/tests/aws_handler.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { beforeAll, describe, expect, it } from "vitest";
import { execSync } from "node:child_process";
import { existsSync, readdirSync, readFileSync, rmSync } from "node:fs";
import path from "node:path";
import * as which from "which";
import which from "which";

const bunExists = which.sync("bun", { nothrow: true }) !== null;
const npmCli = bunExists ? "bun" : "pnpm";
Expand Down
6 changes: 3 additions & 3 deletions boilerplates/aws/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
"@batijs/compile": "workspace:*",
"@types/node": "^18.19.14",
"@types/which": "^3.0.4",
"aws-cdk": "^2.159.1",
"aws-cdk-lib": "^2.159.1",
"cdk": "^2.159.1",
"aws-cdk": "^2.160.0",
"aws-cdk-lib": "^2.160.0",
"cdk": "^2.160.0",
"constructs": "^10.3.0",
"esbuild": "^0.24.0",
"npm-run-all2": "^6.2.3",
Expand Down
20 changes: 8 additions & 12 deletions boilerplates/biome/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
import { addDependency, loadAsJson, setScripts, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

setScripts(packageJson, {
lint: {
return packageJson
.setScript("lint", {
value: "biome lint --write .",
precedence: 0,
},
format: {
})
.setScript("format", {
value: "biome format --write .",
precedence: 0,
},
});

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["@biomejs/biome"],
});
})
.addDevDependencies(["@biomejs/biome"]);
}
57 changes: 16 additions & 41 deletions boilerplates/cloudflare/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,57 +1,32 @@
import { addDependency, loadAsJson, removeDependency, setScripts, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

setScripts(packageJson, {
"preview:wrangler": {
return packageJson
.setScript("preview:wrangler", {
value: "wrangler pages dev",
precedence: 40,
warnIfReplaced: true,
},
preview: {
})
.setScript("preview", {
value: "run-s build preview:wrangler",
precedence: 40,
warnIfReplaced: true,
},
"deploy:wrangler": {
})
.setScript("deploy:wrangler", {
value: "wrangler pages deploy",
precedence: 40,
warnIfReplaced: true,
},
deploy: {
})
.setScript("deploy", {
value: "run-s build deploy:wrangler",
precedence: 40,
warnIfReplaced: true,
},
});

addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["wrangler", "npm-run-all2", "@cloudflare/workers-types"],
dependencies: ["vike-cloudflare"],
});

// TODO: find a way to link "scripts" and their dependencies (like "tsx" and "cross-env")
// so that when overriding a script, we can auto-detect which dependencies need to be removed
// addDependency(packageJson, await import("../package.json").then((x) => x.default), {
// devDependencies: {
// wrangler: {
// removeIfScriptsReplaced: ["preview:wrangler", "deploy:wrangler", "preview", "deploy"],
// },
// "npm-run-all2": {
// removeIfScriptsReplaced: ["preview", "deploy"],
// },
// },
// });

if (props.meta.BATI.has("hattip")) {
addDependency(packageJson, await import("../package.json").then((x) => x.default), {
dependencies: ["@hattip/adapter-cloudflare-workers"],
});
} else {
removeDependency(packageJson, "tsx");
removeDependency(packageJson, "cross-env");
}

return packageJson;
})
.addDevDependencies(["@cloudflare/workers-types"])
.addDependencies(["vike-cloudflare"])
.addDevDependencies(["wrangler"], ["preview:wrangler", "deploy:wrangler", "preview", "deploy"])
.addDevDependencies(["npm-run-all2"], ["preview", "deploy"])
.addDependencies(["@hattip/adapter-cloudflare-workers"], props.meta.BATI.has("hattip"));
}
2 changes: 1 addition & 1 deletion boilerplates/cloudflare/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"@types/node": "^18.19.14",
"npm-run-all2": "^6.2.3",
"vike-cloudflare": "^0.1.2",
"wrangler": "^3.78.7"
"wrangler": "^3.78.8"
},
"dependencies": {
"@batijs/core": "workspace:*"
Expand Down
9 changes: 3 additions & 6 deletions boilerplates/compiled/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { addDependency, loadAsJson, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["vite-plugin-compiled-react"],
dependencies: ["@compiled/react"],
});
return packageJson.addDevDependencies(["vite-plugin-compiled-react"]).addDependencies(["@compiled/react"]);
}
11 changes: 6 additions & 5 deletions boilerplates/d1-sqlite/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { loadAsJson, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

packageJson.scripts["d1:migrate"] = "wrangler d1 migrations apply YOUR_DATABASE_NAME --local";

return packageJson;
return packageJson.setScript("d1:migrate", {
value: "wrangler d1 migrations apply YOUR_DATABASE_NAME --local",
precedence: 0,
});
}
8 changes: 3 additions & 5 deletions boilerplates/d1/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { addDependency, loadAsJson, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["@universal-middleware/core"],
});
return packageJson.addDevDependencies(["@universal-middleware/core"]);
}
2 changes: 1 addition & 1 deletion boilerplates/d1/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"@types/node": "^18.19.14",
"@universal-middleware/core": "^0.2.10",
"vike": "^0.4.196",
"wrangler": "^3.78.7"
"wrangler": "^3.78.8"
},
"dependencies": {
"@batijs/core": "workspace:*"
Expand Down
37 changes: 18 additions & 19 deletions boilerplates/drizzle/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
import { addDependency, loadAsJson, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

packageJson.scripts["drizzle:generate"] = "drizzle-kit generate";
packageJson.scripts["drizzle:migrate"] = props.meta.BATI.hasD1
? "wrangler d1 migrations apply YOUR_DATABASE_NAME --local"
: "drizzle-kit migrate";
packageJson.scripts["drizzle:studio"] = "drizzle-kit studio";

if (!props.meta.BATI.hasD1) {
addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["@types/better-sqlite3"],
dependencies: ["better-sqlite3"],
});
}

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["tsx"],
dependencies: ["drizzle-kit", "drizzle-orm", "dotenv"],
});
return packageJson
.setScript("drizzle:generate", {
value: "drizzle-kit generate",
precedence: 20,
})
.setScript("drizzle:migrate", {
value: props.meta.BATI.hasD1 ? "wrangler d1 migrations apply YOUR_DATABASE_NAME --local" : "drizzle-kit migrate",
precedence: 20,
})
.setScript("drizzle:studio", {
value: "drizzle-kit studio",
precedence: 20,
})
.addDependencies(["drizzle-kit", "drizzle-orm", "dotenv"])
.addDevDependencies(["@types/better-sqlite3"], !props.meta.BATI.hasD1)
.addDependencies(["better-sqlite3"], !props.meta.BATI.hasD1);
}
3 changes: 1 addition & 2 deletions boilerplates/drizzle/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@
"better-sqlite3": "^11.3.0",
"dotenv": "^16.4.5",
"drizzle-kit": "^0.24.2",
"drizzle-orm": "^0.33.0",
"tsx": "^4.19.1"
"drizzle-orm": "^0.33.0"
},
"dependencies": {
"@batijs/core": "workspace:*"
Expand Down
22 changes: 13 additions & 9 deletions boilerplates/edgedb/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import { addDependency, loadAsJson, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

packageJson.scripts["edgedb:generate-queries"] = "@edgedb/generate queries";
packageJson.scripts["edgedb:generate-edgeql-js"] = "@edgedb/generate edgeql-js";

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["@edgedb/generate"],
dependencies: ["edgedb"],
});
return packageJson
.setScript("edgedb:generate-queries", {
value: "@edgedb/generate queries",
precedence: 0,
})
.setScript("edgedb:generate-edgeql-js", {
value: "@edgedb/generate edgeql-js",
precedence: 0,
})
.addDevDependencies(["@edgedb/generate"])
.addDependencies(["edgedb"]);
}
2 changes: 1 addition & 1 deletion boilerplates/edgedb/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"devDependencies": {
"@batijs/compile": "workspace:*",
"@edgedb/generate": "^0.5.6",
"@prisma/client": "^5.19.1",
"@prisma/client": "^5.20.0",
"@types/node": "^18.19.14",
"colorette": "^2.0.20",
"edgedb": "^1.5.12"
Expand Down
44 changes: 10 additions & 34 deletions boilerplates/eslint/files/$package.json.ts
Original file line number Diff line number Diff line change
@@ -1,40 +1,16 @@
import { addDependency, loadAsJson, setScripts, type TransformerProps } from "@batijs/core";
import { loadPackageJson, type TransformerProps } from "@batijs/core";

export default async function getPackageJson(props: TransformerProps) {
const packageJson = await loadAsJson(props);
const packageJson = await loadPackageJson(props, await import("../package.json").then((x) => x.default));

setScripts(packageJson, {
lint: {
return packageJson
.setScript("lint", {
value: "eslint .",
precedence: 0,
},
});

if (props.meta.BATI.has("prettier")) {
addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["eslint-plugin-prettier", "eslint-config-prettier"],
});
}

if (props.meta.BATI.has("react")) {
addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["eslint-plugin-react", "globals"],
});
}

if (props.meta.BATI.has("vue")) {
addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["eslint-plugin-vue", "vue-eslint-parser"],
});
}

if (props.meta.BATI.has("solid")) {
addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["eslint-plugin-solid", "globals"],
});
}

return addDependency(packageJson, await import("../package.json").then((x) => x.default), {
devDependencies: ["eslint", "@eslint/js", "typescript-eslint"],
});
})
.addDevDependencies(["eslint", "@eslint/js", "typescript-eslint"])
.addDevDependencies(["eslint-plugin-prettier", "eslint-config-prettier"], props.meta.BATI.has("prettier"))
.addDevDependencies(["eslint-plugin-react", "globals"], props.meta.BATI.has("react"))
.addDevDependencies(["eslint-plugin-vue", "vue-eslint-parser"], props.meta.BATI.has("vue"))
.addDevDependencies(["eslint-plugin-solid", "globals"], props.meta.BATI.has("solid"));
}
Loading
Loading