diff --git a/packages/plop/package.json b/packages/plop/package.json index a229955..9266a5c 100644 --- a/packages/plop/package.json +++ b/packages/plop/package.json @@ -33,10 +33,13 @@ }, "devDependencies": { "cli-testing-library": "^2.0.2", + "cross-env": "^7.0.3", + "glob": "^10.3.12", "inquirer-directory": "^2.2.0", "nyc": "^15.1.0", "plop-pack-fancy-comments": "^0.2.1", "queue-microtask": "^1.2.3", + "tsx": "^4.7.2", "vitest": "^1.1.0" }, "homepage": "https://plopjs.com", diff --git a/packages/plop/src/plop.js b/packages/plop/src/plop.js index 251c75e..41ad92b 100644 --- a/packages/plop/src/plop.js +++ b/packages/plop/src/plop.js @@ -1,5 +1,6 @@ #!/usr/bin/env node +import "tsx"; import ora from "ora"; import path from "node:path"; import Liftoff from "liftoff"; diff --git a/packages/plop/tests/examples/typescript/plopfile.ts b/packages/plop/tests/examples/typescript/plopfile.ts index 59806d5..03f0dd7 100644 --- a/packages/plop/tests/examples/typescript/plopfile.ts +++ b/packages/plop/tests/examples/typescript/plopfile.ts @@ -7,7 +7,7 @@ module.exports = function (plop: NodePlopAPI) { { type: "input", name: "name", - message: "What is your name?", + message: "What is your Typescript name?", validate: function (value) { if (/.+/.test(value)) { return true; diff --git a/packages/plop/tests/examples/typescript/tsconfig.json b/packages/plop/tests/examples/typescript/tsconfig.json index dac20cc..97a51cf 100644 --- a/packages/plop/tests/examples/typescript/tsconfig.json +++ b/packages/plop/tests/examples/typescript/tsconfig.json @@ -8,7 +8,7 @@ "strict": true, "baseUrl": "./", "paths": { - "plop": ["../../src/plop.d.ts"] + "plop": ["../../../src/plop.d.ts"] } } } diff --git a/packages/plop/tests/examples/wrap-plop/index.js b/packages/plop/tests/examples/wrap-plop/index.js index 9746dea..958ff62 100644 --- a/packages/plop/tests/examples/wrap-plop/index.js +++ b/packages/plop/tests/examples/wrap-plop/index.js @@ -1,5 +1,6 @@ #!/usr/bin/env node import path from "node:path"; +import { globSync } from "glob"; import minimist from "minimist"; import { Plop, run } from "../../../instrumented/src/plop.js"; @@ -13,8 +14,11 @@ Plop.prepare( { cwd: argv.cwd, preload: argv.preload || [], + // Use the plopfile in cwd if available, otherwise use the default plopfile // In order for `plop` to always pick up the `plopfile.js` despite the CWD, you must use `__dirname` - configPath: path.join(__dirname, "plopfile.cjs"), + configPath: + globSync(`plopfile.{cjs,js,ts}`, { cwd: argv.cwd, absolute: true })[0] || + path.join(__dirname, "plopfile.cjs"), completion: argv.completion, // This will merge the `plop` argv and the generator argv. // This means that you don't need to use `--` anymore diff --git a/packages/plop/tests/typescript.spec.js b/packages/plop/tests/typescript.spec.js index 1ca6fe3..06e7954 100644 --- a/packages/plop/tests/typescript.spec.js +++ b/packages/plop/tests/typescript.spec.js @@ -16,5 +16,5 @@ test("support typescript out of the box", async () => { cwd: resolve(__dirname, "./examples/typescript"), }); - expect(await findByText("What is your name?")).toBeInTheConsole(); + expect(await findByText("What is your Typescript name?")).toBeInTheConsole(); }); diff --git a/yarn.lock b/yarn.lock index 202067b..c2df9c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -599,6 +599,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/aix-ppc64@npm:0.19.12" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/android-arm64@npm:0.19.10" @@ -606,6 +613,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm64@npm:0.19.12" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/android-arm@npm:0.19.10" @@ -613,6 +627,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm@npm:0.19.12" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/android-x64@npm:0.19.10" @@ -620,6 +641,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-x64@npm:0.19.12" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/darwin-arm64@npm:0.19.10" @@ -627,6 +655,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-arm64@npm:0.19.12" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/darwin-x64@npm:0.19.10" @@ -634,6 +669,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-x64@npm:0.19.12" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/freebsd-arm64@npm:0.19.10" @@ -641,6 +683,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-arm64@npm:0.19.12" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/freebsd-x64@npm:0.19.10" @@ -648,6 +697,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-x64@npm:0.19.12" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-arm64@npm:0.19.10" @@ -655,6 +711,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm64@npm:0.19.12" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-arm@npm:0.19.10" @@ -662,6 +725,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm@npm:0.19.12" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-ia32@npm:0.19.10" @@ -669,6 +739,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ia32@npm:0.19.12" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-loong64@npm:0.19.10" @@ -676,6 +753,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-loong64@npm:0.19.12" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-mips64el@npm:0.19.10" @@ -683,6 +767,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-mips64el@npm:0.19.12" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-ppc64@npm:0.19.10" @@ -690,6 +781,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ppc64@npm:0.19.12" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-riscv64@npm:0.19.10" @@ -697,6 +795,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-riscv64@npm:0.19.12" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-s390x@npm:0.19.10" @@ -704,6 +809,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-s390x@npm:0.19.12" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/linux-x64@npm:0.19.10" @@ -711,6 +823,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-x64@npm:0.19.12" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/netbsd-x64@npm:0.19.10" @@ -718,6 +837,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/netbsd-x64@npm:0.19.12" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/openbsd-x64@npm:0.19.10" @@ -725,6 +851,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/openbsd-x64@npm:0.19.12" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/sunos-x64@npm:0.19.10" @@ -732,6 +865,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/sunos-x64@npm:0.19.12" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/win32-arm64@npm:0.19.10" @@ -739,6 +879,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-arm64@npm:0.19.12" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/win32-ia32@npm:0.19.10" @@ -746,6 +893,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-ia32@npm:0.19.12" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.19.10": version: 0.19.10 resolution: "@esbuild/win32-x64@npm:0.19.10" @@ -753,6 +907,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-x64@npm:0.19.12" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -2441,6 +2602,18 @@ __metadata: languageName: node linkType: hard +"cross-env@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: "npm:^7.0.1" + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: e99911f0d31c20e990fd92d6fd001f4b01668a303221227cc5cb42ed155f086351b1b3bd2699b200e527ab13011b032801f8ce638e6f09f854bdf744095e604c + languageName: node + linkType: hard + "cross-spawn@npm:^5.1.0": version: 5.1.0 resolution: "cross-spawn@npm:5.1.0" @@ -2452,7 +2625,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -3014,6 +3187,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:~0.19.10": + version: 0.19.12 + resolution: "esbuild@npm:0.19.12" + dependencies: + "@esbuild/aix-ppc64": "npm:0.19.12" + "@esbuild/android-arm": "npm:0.19.12" + "@esbuild/android-arm64": "npm:0.19.12" + "@esbuild/android-x64": "npm:0.19.12" + "@esbuild/darwin-arm64": "npm:0.19.12" + "@esbuild/darwin-x64": "npm:0.19.12" + "@esbuild/freebsd-arm64": "npm:0.19.12" + "@esbuild/freebsd-x64": "npm:0.19.12" + "@esbuild/linux-arm": "npm:0.19.12" + "@esbuild/linux-arm64": "npm:0.19.12" + "@esbuild/linux-ia32": "npm:0.19.12" + "@esbuild/linux-loong64": "npm:0.19.12" + "@esbuild/linux-mips64el": "npm:0.19.12" + "@esbuild/linux-ppc64": "npm:0.19.12" + "@esbuild/linux-riscv64": "npm:0.19.12" + "@esbuild/linux-s390x": "npm:0.19.12" + "@esbuild/linux-x64": "npm:0.19.12" + "@esbuild/netbsd-x64": "npm:0.19.12" + "@esbuild/openbsd-x64": "npm:0.19.12" + "@esbuild/sunos-x64": "npm:0.19.12" + "@esbuild/win32-arm64": "npm:0.19.12" + "@esbuild/win32-ia32": "npm:0.19.12" + "@esbuild/win32-x64": "npm:0.19.12" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 861fa8eb2428e8d6521a4b7c7930139e3f45e8d51a86985cc29408172a41f6b18df7b3401e7e5e2d528cdf83742da601ddfdc77043ddc4f1c715a8ddb2d8a255 + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -3854,6 +4107,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.7.2": + version: 4.7.3 + resolution: "get-tsconfig@npm:4.7.3" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 7397bb4f8aef936df4d9016555b662dcf5279f3c46428b7c7c1ff5e94ab2b87d018b3dda0f4bc1a28b154d5affd0eac5d014511172c085fd8a9cdff9ea7fe043 + languageName: node + linkType: hard + "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" @@ -3896,6 +4158,21 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.3.12": + version: 10.3.12 + resolution: "glob@npm:10.3.12" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.6" + minimatch: "npm:^9.0.1" + minipass: "npm:^7.0.4" + path-scurry: "npm:^1.10.2" + bin: + glob: dist/esm/bin.mjs + checksum: 9e8186abc22dc824b5dd86cefd8e6b5621a72d1be7f68bacc0fd681e8c162ec5546660a6ec0553d6a74757a585e655956c7f8f1a6d24570e8d865c307323d178 + languageName: node + linkType: hard + "glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.0 resolution: "glob@npm:7.2.0" @@ -5002,6 +5279,19 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^2.3.6": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 6e6490d676af8c94a7b5b29b8fd5629f21346911ebe2e32931c2a54210134408171c24cee1a109df2ec19894ad04a429402a8438cbf5cc2794585d35428ace76 + languageName: node + linkType: hard + "jest-diff@npm:^27.5.1": version: 27.5.1 resolution: "jest-diff@npm:27.5.1" @@ -5393,6 +5683,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 502ec42c3309c0eae1ce41afca471f831c278566d45a5273a0c51102dee31e0e250a62fa9029c3370988df33a14188a38e682c16143b794de78668de3643e302 + languageName: node + linkType: hard + "lru-cache@npm:^4.0.1": version: 4.1.5 resolution: "lru-cache@npm:4.1.5" @@ -5722,6 +6019,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^7.0.4": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: e864bd02ceb5e0707696d58f7ce3a0b89233f0d686ef0d447a66db705c0846a8dc6f34865cd85256c1472ff623665f616b90b8ff58058b2ad996c5de747d2d18 + languageName: node + linkType: hard + "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -6445,6 +6749,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.10.2": + version: 1.10.2 + resolution: "path-scurry@npm:1.10.2" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: a2bbbe8dc284c49dd9be78ca25f3a8b89300e0acc24a77e6c74824d353ef50efbf163e64a69f4330b301afca42d0e2229be0560d6d616ac4e99d48b4062016b1 + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -6581,6 +6895,8 @@ __metadata: "@types/liftoff": "npm:^4.0.3" chalk: "npm:^5.3.0" cli-testing-library: "npm:^2.0.2" + cross-env: "npm:^7.0.3" + glob: "npm:^10.3.12" inquirer-directory: "npm:^2.2.0" interpret: "npm:^3.1.1" liftoff: "npm:^4.0.0" @@ -6590,6 +6906,7 @@ __metadata: ora: "npm:^8.0.0" plop-pack-fancy-comments: "npm:^0.2.1" queue-microtask: "npm:^1.2.3" + tsx: "npm:^4.7.2" v8flags: "npm:^4.0.1" vitest: "npm:^1.1.0" bin: @@ -6949,6 +7266,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 0763150adf303040c304009231314d1e84c6e5ebfa2d82b7d94e96a6e82bacd1dcc0b58ae257315f3c8adb89a91d8d0f12928241cba2df1680fbe6f60bf99b0e + languageName: node + linkType: hard + "resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.3.2": version: 1.22.0 resolution: "resolve@npm:1.22.0" @@ -8101,6 +8425,22 @@ __metadata: languageName: node linkType: hard +"tsx@npm:^4.7.2": + version: 4.7.2 + resolution: "tsx@npm:4.7.2" + dependencies: + esbuild: "npm:~0.19.10" + fsevents: "npm:~2.3.3" + get-tsconfig: "npm:^4.7.2" + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: 3a06564f6926cc26bcdbf2752c361408d8e594a30abf15dc4639d4b964e98eedd3358c34ccd56ea15021519ebafe27a003d6cf26de0f530ea2cc34cb63fd0bfb + languageName: node + linkType: hard + "tty-table@npm:^4.1.5": version: 4.2.1 resolution: "tty-table@npm:4.2.1"