aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/scripts/generate.mjs
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:55 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:55 +0800
commitfc8c5fdce62fb229202659408798a7b6c98f6e8b (patch)
tree7554f80e50de4af6fd255afa7c21bcdd58a7af34 /cli/scripts/generate.mjs
parentdd84b9d64fb98746a230cd24233ff50a562c39c9 (diff)
downloadHydroRoll-fc8c5fdce62fb229202659408798a7b6c98f6e8b.tar.gz
HydroRoll-fc8c5fdce62fb229202659408798a7b6c98f6e8b.zip
Diffstat (limited to 'cli/scripts/generate.mjs')
-rw-r--r--cli/scripts/generate.mjs297
1 files changed, 0 insertions, 297 deletions
diff --git a/cli/scripts/generate.mjs b/cli/scripts/generate.mjs
deleted file mode 100644
index 1b9cbec..0000000
--- a/cli/scripts/generate.mjs
+++ /dev/null
@@ -1,297 +0,0 @@
-#!/usr/bin/env node
-import shelljs from "shelljs";
-import path from "path";
-import fs from "fs-extra";
-import faker from "faker";
-import graphGenerator from "ngraph.generators";
-import copy from "copy-template-dir";
-import { fileURLToPath } from "url";
-
-const __dirname = path.dirname(fileURLToPath(import.meta.url));
-faker.seed(123);
-
-const scope = `@${faker.hacker
- .noun()
- .toLowerCase()
- .replace(/\s/g, "-")
- .replace("1080p-", "rando")}`;
-
-const type = process.argv[2];
-
-// TODO: algo should be customizable along with the size
-const packageGraph = graphGenerator.complete(5);
-
-// Generate the package name & versions
-packageGraph.forEachNode((node) => {
- node.data = {
- name: `${scope}/${faker.hacker.adjective()}-${faker.hacker.noun()}`
- .toLocaleLowerCase()
- .replace(/\s/g, "-"),
- version: faker.system.semver(),
- };
-});
-
-// Generate package dependencies
-packageGraph.forEachNode((node) => {
- const links = packageGraph.getLinks(node.id);
-
- if (links) {
- for (const link of links) {
- if (link.fromId === node.id) {
- const depNode = packageGraph.getNode(link.toId);
- node.data.dependencies = node.data.dependencies || {};
- node.data.dependencies[depNode.data.name] = `^${depNode.data.version}`;
- node.data.implicitDependencies = node.data.implicitDependencies || [];
- node.data.implicitDependencies.push(
- depNode.data.name.replace(/^@[^/]+\//, "")
- );
- }
- }
- }
-});
-
-// Generate the monorepo
-// 1. the root package.json
-// 2. create packages/
-// 3. create package directories
-const root = path.join(__dirname, "../demo", type);
-
-function generate(root, skipInstall) {
- fs.mkdirSync(root, { recursive: true });
- if (type !== "nx") {
- fs.writeFileSync(
- path.join(root, ".gitignore"),
- `node_modules
-dist
-.turbo
-out
-turbo
-turbo-linux
-.yalc`
- );
- if (fs.existsSync(root)) {
- try {
- fs.rmSync(root + "/packages", { recursive: true });
- } catch (error) {}
- }
-
- let deps =
- type !== "turbo"
- ? {
- devDependencies: {
- [type]: "*",
- },
- }
- : {};
-
- fs.writeFileSync(
- path.join(root, "package.json"),
- JSON.stringify(
- {
- name: "monorepo",
- version: "0.0.0",
- private: true,
- workspaces: ["packages/*"],
- ...deps,
- packageManager: "yarn@1.22.17",
- },
- null,
- 2
- )
- );
-
- fs.writeFileSync(
- path.join(root, "tsconfig.json"),
- JSON.stringify(
- {
- compilerOptions: {
- composite: false,
- declaration: true,
- declarationMap: true,
- esModuleInterop: true,
- forceConsistentCasingInFileNames: true,
- inlineSourceMap: true,
- inlineSources: false,
- isolatedModules: true,
- moduleResolution: "node",
- noUnusedLocals: false,
- noUnusedParameters: false,
- preserveWatchOutput: true,
- skipLibCheck: true,
- strict: true,
- lib: ["es2020"],
- module: "commonjs",
- target: "es2020",
- },
- },
- null,
- 2
- )
- );
- }
-
- if (type === "turbo") {
- fs.writeFileSync(
- path.join(root, "turbo.json"),
- JSON.stringify(
- {
- npmClient: "yarn",
- cacheStorageConfig: {
- provider: "local",
- cacheUrl: "https://1a77600385dd.ngrok.io",
- },
- pipeline: {
- build: {
- outputs: ["dist/**/*"],
- dependsOn: ["^build"],
- },
- test: {
- dependsOn: ["build"],
- },
- dev: {
- cache: false,
- },
- },
- },
- null,
- 2
- )
- );
- }
-
- if (type === "lerna") {
- fs.writeFileSync(
- path.join(root, "lerna.json"),
- JSON.stringify(
- {
- packages: ["packages/*"],
- version: "0.0.0",
- },
- null,
- 2
- )
- );
- }
-
- if (type === "lage") {
- fs.writeFileSync(
- path.join(root, "lage.config.js"),
- `
-module.exports = {
- pipeline: {
- build: ['^build'],
- test: ['build'],
- lint: [],
- },
- npmClient: 'yarn',
- cacheOptions: {
- cacheStorageConfig: {
- provider: 'local',
- },
- outputGlob: ['dist/**'],
- },
-};
- `
- );
- }
-
- if (type !== "nx") {
- fs.mkdirSync(path.join(root, "packages"));
- } else {
- shelljs.exec(
- `cd ${path.join(
- __dirname,
- "../demo"
- )} && yarn create nx-workspace nx --preset=empty --nx-cloud=false --packageManager=yarn --cli=nx --linter=eslint`
- );
- shelljs.exec(`cd ${root} && yarn add @nrwl/node`);
- }
-
- if (type !== "nx") {
- packageGraph.forEachNode((node) => {
- const packageRoot = path.join(
- root,
- "packages",
- node.data.name.replace(/^@[^/]+\//, "")
- );
- fs.mkdirSync(packageRoot, { recursive: true });
- copy(
- path.join(__dirname, "templates"),
- path.join(packageRoot),
- {
- name: node.data.name.replace(/^@[^/]+\//, ""),
- },
- () => {}
- );
-
- fs.writeFileSync(
- path.join(packageRoot, "package.json"),
- JSON.stringify(
- {
- name: node.data.name,
- version: node.data.version,
- dependencies: node.data.dependencies,
- files: ["dist/**"],
- main: "dist/index.js",
- types: "dist/index.d.ts",
- devDependencies: {
- typescript: "^4.6.3",
- jest: "^27.0.0",
- "ts-jest": "^27.0.0",
- "@types/jest": "^27.0.0",
- },
- scripts: {
- build: "tsc",
- dev: "tsc -w",
- test: "jest",
- },
- },
- null,
- 2
- )
- );
- });
- }
-
- if (type === "nx") {
- packageGraph.forEachNode((node) => {
- shelljs.exec(
- `cd ${root} && yarn nx g @nrwl/node:library --buildable --publishable --name="${node.data.name.replace(
- /^@[^/]+\//,
- ""
- )}" --importPath="${node.data.name.replace(/^@[^/]+\//, "")}"`
- );
- // instead of dealing with actual code, just list as implicitDependencies
- const safeName = node.data.name.replace(/^@[^/]+\//, "");
- const workspace = fs.readJSONSync(path.join(root, "workspace.json"));
- workspace.projects[safeName] = {
- ...workspace.projects[safeName],
- implicitDependencies: node.data.implicitDependencies || [],
- };
- fs.writeFileSync(
- path.join(root, "nx.json"),
- JSON.stringify(workspace, null, 2)
- );
- });
- }
- if (!skipInstall) {
- shelljs.exec(`cd ${root} && yarn install`);
- }
- fs.ensureDirSync(path.join(root, ".git"));
- fs.writeFileSync(
- path.join(root, ".git", "config"),
- `
-[user]
- name = GitHub Actions
- email = actions@users.noreply.github.com
-`
- );
- shelljs.exec(
- `cd ${root} && git init -q && git add . && git commit -m "init"`
- );
-}
-
-generate(root);
-if (type === "turbo") {
- generate(root + "-installed", true);
-}