Skip to content

Commit

Permalink
Merge pull request #398 from vikejs/package-json-transformer
Browse files Browse the repository at this point in the history
  • Loading branch information
magne4000 authored Sep 24, 2024
2 parents 83a06de + 09bfb23 commit 0c84e3a
Show file tree
Hide file tree
Showing 71 changed files with 1,181 additions and 1,170 deletions.
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

0 comments on commit 0c84e3a

Please sign in to comment.