diff --git a/packages/create-docusaurus/package.json b/packages/create-docusaurus/package.json index 89187f7094..418329635a 100755 --- a/packages/create-docusaurus/package.json +++ b/packages/create-docusaurus/package.json @@ -13,8 +13,8 @@ }, "scripts": { "create-docusaurus": "create-docusaurus", - "build": "tsc", - "watch": "tsc --watch" + "build": "tsc -p tsconfig.build.json", + "watch": "tsc -p tsconfig.build.json --watch" }, "bin": "bin/index.js", "publishConfig": { diff --git a/packages/create-docusaurus/tsconfig.build.json b/packages/create-docusaurus/tsconfig.build.json new file mode 100644 index 0000000000..41b40e7cf6 --- /dev/null +++ b/packages/create-docusaurus/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "es2020", + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src/"], + "exclude": ["templates/"] +} diff --git a/packages/create-docusaurus/tsconfig.json b/packages/create-docusaurus/tsconfig.json index 41b40e7cf6..edb2c88e1d 100644 --- a/packages/create-docusaurus/tsconfig.json +++ b/packages/create-docusaurus/tsconfig.json @@ -1,12 +1,10 @@ +// For editor typechecking; includes bin { - "extends": "../../tsconfig.json", + "extends": "./tsconfig.build.json", "compilerOptions": { - "module": "es2020", - "incremental": true, - "tsBuildInfoFile": "./lib/.tsbuildinfo", - "rootDir": "src", - "outDir": "lib" + "noEmit": true, + "allowJs": true, + "rootDir": "." }, - "include": ["src/"], - "exclude": ["templates/"] + "include": ["src", "bin"] } diff --git a/packages/docusaurus-migrate/bin/index.js b/packages/docusaurus-migrate/bin/index.mjs similarity index 74% rename from packages/docusaurus-migrate/bin/index.js rename to packages/docusaurus-migrate/bin/index.mjs index 7982936ea4..baf72762ae 100755 --- a/packages/docusaurus-migrate/bin/index.js +++ b/packages/docusaurus-migrate/bin/index.mjs @@ -13,18 +13,9 @@ import semver from 'semver'; import cli from 'commander'; import path from 'path'; import {createRequire} from 'module'; -import {migrateDocusaurusProject, migrateMDToMDX} from '../lib/index.js'; -const requiredVersion = createRequire(import.meta.url)('../package.json') - .engines.node; - -function wrapCommand(fn) { - return (...args) => - fn(...args).catch((err) => { - logger.error(err.stack); - process.exitCode = 1; - }); -} +const moduleRequire = createRequire(import.meta.url); +const requiredVersion = moduleRequire('../package.json').engines.node; if (!semver.satisfies(process.version, requiredVersion)) { logger.error('Minimum Node.js version not met :('); @@ -32,6 +23,10 @@ if (!semver.satisfies(process.version, requiredVersion)) { process.exit(1); } +// See https://github.com/facebook/docusaurus/pull/6860 +const {migrateDocusaurusProject, migrateMDToMDX} = + moduleRequire('../lib/index.js'); + cli .command('migrate [siteDir] [newDir]') .option('--mdx', 'try to migrate MD to MDX too') @@ -40,7 +35,7 @@ cli .action((siteDir = '.', newDir = '.', {mdx, page} = {}) => { const sitePath = path.resolve(siteDir); const newSitePath = path.resolve(newDir); - wrapCommand(migrateDocusaurusProject)(sitePath, newSitePath, mdx, page); + migrateDocusaurusProject(sitePath, newSitePath, mdx, page); }); cli @@ -49,7 +44,7 @@ cli .action((siteDir = '.', newDir = '.') => { const sitePath = path.resolve(siteDir); const newSitePath = path.resolve(newDir); - wrapCommand(migrateMDToMDX)(sitePath, newSitePath); + migrateMDToMDX(sitePath, newSitePath); }); cli.parse(process.argv); @@ -57,3 +52,8 @@ cli.parse(process.argv); if (!process.argv.slice(2).length) { cli.outputHelp(); } + +process.on('unhandledRejection', (err) => { + logger.error(err); + process.exit(1); +}); diff --git a/packages/docusaurus-migrate/package.json b/packages/docusaurus-migrate/package.json index 5da3265483..abf7fc7be3 100644 --- a/packages/docusaurus-migrate/package.json +++ b/packages/docusaurus-migrate/package.json @@ -2,14 +2,13 @@ "name": "@docusaurus/migrate", "version": "2.0.0-beta.17", "description": "A CLI tool to migrate from older versions of Docusaurus.", - "main": "lib/index.js", "license": "MIT", "engines": { "node": ">=14" }, "scripts": { - "build": "tsc", - "watch": "tsc --watch" + "build": "tsc -p tsconfig.build.json", + "watch": "tsc -p tsconfig.build.json --watch" }, "repository": { "type": "git", diff --git a/packages/docusaurus-migrate/tsconfig.build.json b/packages/docusaurus-migrate/tsconfig.build.json new file mode 100644 index 0000000000..358fdb6f6e --- /dev/null +++ b/packages/docusaurus-migrate/tsconfig.build.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src"] +} diff --git a/packages/docusaurus-migrate/tsconfig.json b/packages/docusaurus-migrate/tsconfig.json index f5902ba108..419de04867 100644 --- a/packages/docusaurus-migrate/tsconfig.json +++ b/packages/docusaurus-migrate/tsconfig.json @@ -1,9 +1,11 @@ +// For editor typechecking; includes bin { - "extends": "../../tsconfig.json", + "extends": "./tsconfig.build.json", "compilerOptions": { - "incremental": true, - "tsBuildInfoFile": "./lib/.tsbuildinfo", - "rootDir": "src", - "outDir": "lib" - } + "noEmit": true, + "module": "esnext", + "allowJs": true, + "rootDir": "." + }, + "include": ["src", "bin"] } diff --git a/packages/docusaurus/bin/docusaurus.mjs b/packages/docusaurus/bin/docusaurus.mjs index 168d421118..eee4fc9919 100755 --- a/packages/docusaurus/bin/docusaurus.mjs +++ b/packages/docusaurus/bin/docusaurus.mjs @@ -245,34 +245,33 @@ cli.arguments('').action((cmd) => { }); /** - * @param {string} command + * @param {string | undefined} command */ function isInternalCommand(command) { - return [ - 'start', - 'build', - 'swizzle', - 'deploy', - 'serve', - 'clear', - 'write-translations', - 'write-heading-ids', - ].includes(command); + return ( + command && + [ + 'start', + 'build', + 'swizzle', + 'deploy', + 'serve', + 'clear', + 'write-translations', + 'write-heading-ids', + ].includes(command) + ); } -async function run() { - if (!isInternalCommand(process.argv.slice(2)[0])) { - await externalCommand(cli, await resolveDir('.')); - } - - cli.parse(process.argv); - - if (!process.argv.slice(2).length) { - cli.outputHelp(); - } +if (!isInternalCommand(process.argv.slice(2)[0])) { + await externalCommand(cli, await resolveDir('.')); } -run(); +if (!process.argv.slice(2).length) { + cli.outputHelp(); +} + +cli.parse(process.argv); process.on('unhandledRejection', (err) => { logger.error(err); diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 1d83b9541c..35f285c784 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -24,8 +24,8 @@ "docusaurus": "bin/docusaurus.mjs" }, "scripts": { - "build": "tsc && tsc -p tsconfig.client.json && node copyUntypedFiles.mjs", - "watch": "node copyUntypedFiles.mjs && concurrently -n \"server,client\" --kill-others \"tsc --watch\" \"tsc -p tsconfig.client.json --watch\"" + "build": "tsc -p tsconfig.server.json && tsc -p tsconfig.client.json && node copyUntypedFiles.mjs", + "watch": "node copyUntypedFiles.mjs && concurrently -n \"server,client\" --kill-others \"tsc -p tsconfig.server.json --watch\" \"tsc -p tsconfig.client.json --watch\"" }, "bugs": { "url": "https://github.com/facebook/docusaurus/issues" diff --git a/packages/docusaurus/tsconfig.json b/packages/docusaurus/tsconfig.json index cabe532baa..e467cc1955 100644 --- a/packages/docusaurus/tsconfig.json +++ b/packages/docusaurus/tsconfig.json @@ -1,12 +1,10 @@ +// For editor typechecking; includes bin { - "extends": "../../tsconfig.json", + "extends": "./tsconfig.server.json", "compilerOptions": { - "incremental": true, - "tsBuildInfoFile": "./lib/.tsbuildinfo", - "rootDir": "src", - "outDir": "lib", - "allowJs": true + "noEmit": true, + "rootDir": ".", + "module": "esnext" }, - "include": ["src"], - "exclude": ["**/__tests__/**/*", "src/client"] + "include": ["src", "bin"] } diff --git a/packages/docusaurus/tsconfig.server.json b/packages/docusaurus/tsconfig.server.json new file mode 100644 index 0000000000..cabe532baa --- /dev/null +++ b/packages/docusaurus/tsconfig.server.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "incremental": true, + "tsBuildInfoFile": "./lib/.tsbuildinfo", + "rootDir": "src", + "outDir": "lib", + "allowJs": true + }, + "include": ["src"], + "exclude": ["**/__tests__/**/*", "src/client"] +}