From ed400065ead192e2d991ed6cd37fa6b16ba0ebbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pradel=20Le=CC=81o?= Date: Wed, 1 Dec 2021 18:17:47 +0100 Subject: [PATCH 1/3] feat: create command with templates --- packages/cartable-create/README.md | 3 +++ packages/cartable-create/bin/index.js | 3 +++ packages/cartable-create/package.json | 37 ++++++++++++++++++++++++++ packages/cartable-create/src/index.ts | 0 packages/cartable-create/tsconfig.json | 17 ++++++++++++ pnpm-lock.yaml | 10 +++++++ 6 files changed, 70 insertions(+) create mode 100644 packages/cartable-create/README.md create mode 100644 packages/cartable-create/bin/index.js create mode 100644 packages/cartable-create/package.json create mode 100644 packages/cartable-create/src/index.ts create mode 100644 packages/cartable-create/tsconfig.json diff --git a/packages/cartable-create/README.md b/packages/cartable-create/README.md new file mode 100644 index 0000000..85a8d60 --- /dev/null +++ b/packages/cartable-create/README.md @@ -0,0 +1,3 @@ +# @cartable/create + +This package is used to create local cartable projects. diff --git a/packages/cartable-create/bin/index.js b/packages/cartable-create/bin/index.js new file mode 100644 index 0000000..b3a7f9f --- /dev/null +++ b/packages/cartable-create/bin/index.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require("../dist/index.js"); diff --git a/packages/cartable-create/package.json b/packages/cartable-create/package.json new file mode 100644 index 0000000..039bee7 --- /dev/null +++ b/packages/cartable-create/package.json @@ -0,0 +1,37 @@ +{ + "name": "@cartable/create", + "version": "0.0.0", + "license": "MIT", + "bin": { + "@cartable/create": "./bin/index.js" + }, + "publishConfig": { + "access": "public" + }, + "engines": { + "node": ">=14" + }, + "files": [ + "bin", + "dist" + ], + "scripts": { + "build": "cartable build", + "prepare": "pnpm run build" + }, + "keywords": [ + "node", + "zero-config", + "typescript", + "bundler" + ], + "repository": "git+https://github.com/pradel/cartable.git", + "funding": "https://github.com/sponsors/pradel", + "author": "Léo Pradel", + "dependencies": {}, + "devDependencies": { + "@cartable/core": "^0.2.0", + "@types/node": "16.11.11", + "typescript": "4.5.2" + } +} diff --git a/packages/cartable-create/src/index.ts b/packages/cartable-create/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/cartable-create/tsconfig.json b/packages/cartable-create/tsconfig.json new file mode 100644 index 0000000..236ab62 --- /dev/null +++ b/packages/cartable-create/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["ES2020"], + "outDir": "dist", + "strict": true, + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "esModuleInterop": true, + "module": "commonjs", + "moduleResolution": "node", + "resolveJsonModule": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbad41f..33b97f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,16 @@ importers: '@types/webpack-node-externals': 2.5.3_@swc+core@1.2.115 typescript: 4.5.2 + packages/cartable-create: + specifiers: + '@cartable/core': ^0.2.0 + '@types/node': 16.11.11 + typescript: 4.5.2 + devDependencies: + '@cartable/core': link:../cartable-core + '@types/node': 16.11.11 + typescript: 4.5.2 + packages: /@babel/code-frame/7.16.0: From 8b3f25805e8108e323912849bc9b5fde7781ca21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pradel=20Le=CC=81o?= Date: Wed, 1 Dec 2021 18:20:15 +0100 Subject: [PATCH 2/3] ci: test create command --- .github/workflows/nodejs.yml | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fd50abe..f282a0b 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -29,6 +29,9 @@ jobs: - name: Build @cartable/core run: pnpm run build --filter @cartable/core + - name: Build @cartable/create + run: pnpm run build --filter @cartable/create + - name: Build examples run: pnpm run build --filter "cartable-example-*" diff --git a/package.json b/package.json index a0298b9..3d8cda5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "prettier": "prettier --write \"**/*.{js,ts,tsx,css,scss,json,md,mdx,yml}\"", - "build": "pnpm run build --filter @cartable/core", + "build": "pnpm run build --filter @cartable/*", "version": "pnpx changeset version && pnpm install --lockfile-only", "release": "pnpm run build && pnpx changeset publish", "prepare": "husky install" From d219a2c6100fe12e42985fc57c7df847b11867cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pradel=20Le=CC=81o?= Date: Wed, 1 Dec 2021 18:56:07 +0100 Subject: [PATCH 3/3] start cli --- packages/cartable-create/package.json | 6 ++++-- packages/cartable-create/src/index.ts | 31 +++++++++++++++++++++++++++ pnpm-lock.yaml | 4 +++- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/packages/cartable-create/package.json b/packages/cartable-create/package.json index 039bee7..a02a4cf 100644 --- a/packages/cartable-create/package.json +++ b/packages/cartable-create/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "license": "MIT", "bin": { - "@cartable/create": "./bin/index.js" + "cartable-create": "./bin/index.js" }, "publishConfig": { "access": "public" @@ -28,7 +28,9 @@ "repository": "git+https://github.com/pradel/cartable.git", "funding": "https://github.com/sponsors/pradel", "author": "Léo Pradel", - "dependencies": {}, + "dependencies": { + "commander": "8.3.0" + }, "devDependencies": { "@cartable/core": "^0.2.0", "@types/node": "16.11.11", diff --git a/packages/cartable-create/src/index.ts b/packages/cartable-create/src/index.ts index e69de29..f4534c3 100644 --- a/packages/cartable-create/src/index.ts +++ b/packages/cartable-create/src/index.ts @@ -0,0 +1,31 @@ +import { program, Option } from "commander"; + +const packageJson = require("../package.json"); +program.version(packageJson.version); + +const templates = ["typescript", "javascript"]; + +interface ProgramOption { + template: "typescript" | "javascript"; +} + +program + .argument("", "project directory") + .usage(" [options]") + .addOption( + new Option("-t, --template ", "specify a template") + .choices(templates) + .default("typescript") + ) + .parse(); + +const run = async () => { + const options = program.opts(); + const projectDirectory = program.args[0]; + + // 1. Copy template files + // 2. Install deps + // 3. Print success message +}; + +run(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33b97f7..cc90314 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,7 +84,10 @@ importers: specifiers: '@cartable/core': ^0.2.0 '@types/node': 16.11.11 + commander: 8.3.0 typescript: 4.5.2 + dependencies: + commander: 8.3.0 devDependencies: '@cartable/core': link:../cartable-core '@types/node': 16.11.11 @@ -1873,7 +1876,6 @@ packages: /commander/8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - dev: true /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}