From 81b79e090927901cbe4e84c9d3b8477c6c0636a4 Mon Sep 17 00:00:00 2001 From: 1aron Date: Mon, 10 Jul 2023 01:52:34 +0800 Subject: [PATCH] Fix(CLI): `TypeError: e is not a function` --- package-lock.json | 10 +++++----- packages/pack/package.json | 2 +- packages/pack/src/actions/main.ts | 2 +- packages/techor/package.json | 4 ++-- packages/techor/src/bin/index.ts | 22 ++++++++++++---------- packages/version/src/actions/main.ts | 2 +- 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2aa100..b1b16af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18736,18 +18736,18 @@ "dependencies": { "@techor/fs": "", "@techor/log": "", - "commander": "^10.0.0" + "commander": "^11.0.0" }, "bin": { "techor": "dist/bin/index.bundle.js" } }, "packages/techor/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "engines": { - "node": ">=14" + "node": ">=16" } }, "packages/version": { diff --git a/packages/pack/package.json b/packages/pack/package.json index 3414487..43803f2 100644 --- a/packages/pack/package.json +++ b/packages/pack/package.json @@ -43,8 +43,8 @@ "dependencies": { "@techor/extend": "", "@techor/fs": "", - "@techor/log": "", "@techor/glob": "", + "@techor/log": "", "@techor/one-liner": "", "cross-import": "", "esbuild": "^0.18.11", diff --git a/packages/pack/src/actions/main.ts b/packages/pack/src/actions/main.ts index 38a14fa..3c76128 100644 --- a/packages/pack/src/actions/main.ts +++ b/packages/pack/src/actions/main.ts @@ -20,7 +20,7 @@ import { explorePathsSync } from '@techor/glob' declare type BuildTask = { options?: BuildOptions, metafile?: Metafile, run: () => Promise } -export default async function action(specifiedEntries: string[], options: any = {}) { +module.exports = async function action(specifiedEntries: string[], options: any = {}) { // if (!specifiedEntries.length) { // specifiedEntries = [path.join(options.srcdir, '**/*.{js,ts,jsx,tsx,mjs,mts,css}')] // } diff --git a/packages/techor/package.json b/packages/techor/package.json index 7466185..b41a798 100644 --- a/packages/techor/package.json +++ b/packages/techor/package.json @@ -1,7 +1,7 @@ { "name": "techor", "scripts": { - "build": "esbuild src/bin/index.ts --bundle --outfile=dist/bin/index.bundle.js --format=cjs --minify --platform=node --external:@techor/fs --external:@techor/log --external:commander --external:@techor/version --external:@techor/pack", + "build": "esbuild src/bin/index.ts --bundle --outfile=dist/bin/index.bundle.js --format=cjs --target=esnext --platform=node --external:@techor/fs --external:@techor/log --external:commander --external:@techor/version --external:@techor/pack", "dev": "npm run build -- --watch", "type-check": "tsc --noEmit", "lint": "eslint src" @@ -55,6 +55,6 @@ "dependencies": { "@techor/fs": "", "@techor/log": "", - "commander": "^10.0.0" + "commander": "^11.0.0" } } \ No newline at end of file diff --git a/packages/techor/src/bin/index.ts b/packages/techor/src/bin/index.ts index 990487a..8ebfcc6 100755 --- a/packages/techor/src/bin/index.ts +++ b/packages/techor/src/bin/index.ts @@ -1,10 +1,17 @@ #!/usr/bin/env node -import { program } from 'commander' +import { Command } from 'commander' import { readJSONFileSync } from '@techor/fs' import log from '@techor/log' +import path from 'path' -const { version, name, description } = readJSONFileSync('./package.json') +const { version, name, description } = readJSONFileSync(path.resolve(__dirname, '../../package.json')) +const program = new Command() + +program + .name(name) + .description(description) + .version(version || '0.0.0') program.command('pack [entryPaths...]') .option('-f, --format [formats...]', 'The output format for the generated JavaScript files `iife`, `cjs`, `esm`', ['cjs', 'esm']) @@ -29,8 +36,7 @@ program.command('pack [entryPaths...]') .option('--no-clean', 'OFF: Clean up the previous output directory before the build starts') .action(async function (args, options) { try { - // @ts-expect-error dynamic import action - const action = (await import('@techor/pack/actions/main')).default + const action = require('@techor/pack/actions/main') await action(args, options) } catch (error) { if (error.code === 'ERR_MODULE_NOT_FOUND') { @@ -50,8 +56,7 @@ program.command('version ') .option('--no-public', 'Off: Bump public project version') .action(async function (args, options) { try { - // @ts-expect-error dynamic import action - const action = (await import('@techor/version/actions/main')).default + const action = require('@techor/version/actions/main') await action(args, options) } catch (error) { if (error.code === 'ERR_MODULE_NOT_FOUND') { @@ -62,7 +67,4 @@ program.command('version ') } }) -program.parse(process.argv) -program.name(name) -program.description(description) -program.version(version) \ No newline at end of file +program.parse() \ No newline at end of file diff --git a/packages/version/src/actions/main.ts b/packages/version/src/actions/main.ts index 0f92592..6875513 100644 --- a/packages/version/src/actions/main.ts +++ b/packages/version/src/actions/main.ts @@ -3,7 +3,7 @@ import path from 'path' import log, { paint } from '@techor/log' import { readJSONFileSync, writeFileSync } from '@techor/fs' -export default function action(version: string, options) { +module.exports = function action(version: string, options) { const pkg = readJSONFileSync(path.resolve('./package.json')) if (!options.workspaces) { options.workspaces = pkg.workspaces