refactor: make JS executables included in the tsconfig for editor hints (#6861)

* refactor: make JS executables included in the tsconfig for editor hints

* oops
This commit is contained in:
Joshua Chen 2022-03-06 23:07:23 +08:00 committed by GitHub
parent a6e72192fa
commit 44d73f7230
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 94 additions and 64 deletions

View file

@ -13,8 +13,8 @@
}, },
"scripts": { "scripts": {
"create-docusaurus": "create-docusaurus", "create-docusaurus": "create-docusaurus",
"build": "tsc", "build": "tsc -p tsconfig.build.json",
"watch": "tsc --watch" "watch": "tsc -p tsconfig.build.json --watch"
}, },
"bin": "bin/index.js", "bin": "bin/index.js",
"publishConfig": { "publishConfig": {

View file

@ -0,0 +1,12 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"module": "es2020",
"incremental": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo",
"rootDir": "src",
"outDir": "lib"
},
"include": ["src/"],
"exclude": ["templates/"]
}

View file

@ -1,12 +1,10 @@
// For editor typechecking; includes bin
{ {
"extends": "../../tsconfig.json", "extends": "./tsconfig.build.json",
"compilerOptions": { "compilerOptions": {
"module": "es2020", "noEmit": true,
"incremental": true, "allowJs": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": "."
"rootDir": "src",
"outDir": "lib"
}, },
"include": ["src/"], "include": ["src", "bin"]
"exclude": ["templates/"]
} }

View file

@ -13,18 +13,9 @@ import semver from 'semver';
import cli from 'commander'; import cli from 'commander';
import path from 'path'; import path from 'path';
import {createRequire} from 'module'; import {createRequire} from 'module';
import {migrateDocusaurusProject, migrateMDToMDX} from '../lib/index.js';
const requiredVersion = createRequire(import.meta.url)('../package.json') const moduleRequire = createRequire(import.meta.url);
.engines.node; const requiredVersion = moduleRequire('../package.json').engines.node;
function wrapCommand(fn) {
return (...args) =>
fn(...args).catch((err) => {
logger.error(err.stack);
process.exitCode = 1;
});
}
if (!semver.satisfies(process.version, requiredVersion)) { if (!semver.satisfies(process.version, requiredVersion)) {
logger.error('Minimum Node.js version not met :('); logger.error('Minimum Node.js version not met :(');
@ -32,6 +23,10 @@ if (!semver.satisfies(process.version, requiredVersion)) {
process.exit(1); process.exit(1);
} }
// See https://github.com/facebook/docusaurus/pull/6860
const {migrateDocusaurusProject, migrateMDToMDX} =
moduleRequire('../lib/index.js');
cli cli
.command('migrate [siteDir] [newDir]') .command('migrate [siteDir] [newDir]')
.option('--mdx', 'try to migrate MD to MDX too') .option('--mdx', 'try to migrate MD to MDX too')
@ -40,7 +35,7 @@ cli
.action((siteDir = '.', newDir = '.', {mdx, page} = {}) => { .action((siteDir = '.', newDir = '.', {mdx, page} = {}) => {
const sitePath = path.resolve(siteDir); const sitePath = path.resolve(siteDir);
const newSitePath = path.resolve(newDir); const newSitePath = path.resolve(newDir);
wrapCommand(migrateDocusaurusProject)(sitePath, newSitePath, mdx, page); migrateDocusaurusProject(sitePath, newSitePath, mdx, page);
}); });
cli cli
@ -49,7 +44,7 @@ cli
.action((siteDir = '.', newDir = '.') => { .action((siteDir = '.', newDir = '.') => {
const sitePath = path.resolve(siteDir); const sitePath = path.resolve(siteDir);
const newSitePath = path.resolve(newDir); const newSitePath = path.resolve(newDir);
wrapCommand(migrateMDToMDX)(sitePath, newSitePath); migrateMDToMDX(sitePath, newSitePath);
}); });
cli.parse(process.argv); cli.parse(process.argv);
@ -57,3 +52,8 @@ cli.parse(process.argv);
if (!process.argv.slice(2).length) { if (!process.argv.slice(2).length) {
cli.outputHelp(); cli.outputHelp();
} }
process.on('unhandledRejection', (err) => {
logger.error(err);
process.exit(1);
});

View file

@ -2,14 +2,13 @@
"name": "@docusaurus/migrate", "name": "@docusaurus/migrate",
"version": "2.0.0-beta.17", "version": "2.0.0-beta.17",
"description": "A CLI tool to migrate from older versions of Docusaurus.", "description": "A CLI tool to migrate from older versions of Docusaurus.",
"main": "lib/index.js",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=14" "node": ">=14"
}, },
"scripts": { "scripts": {
"build": "tsc", "build": "tsc -p tsconfig.build.json",
"watch": "tsc --watch" "watch": "tsc -p tsconfig.build.json --watch"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View file

@ -0,0 +1,10 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo",
"rootDir": "src",
"outDir": "lib"
},
"include": ["src"]
}

View file

@ -1,9 +1,11 @@
// For editor typechecking; includes bin
{ {
"extends": "../../tsconfig.json", "extends": "./tsconfig.build.json",
"compilerOptions": { "compilerOptions": {
"incremental": true, "noEmit": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo", "module": "esnext",
"rootDir": "src", "allowJs": true,
"outDir": "lib" "rootDir": "."
} },
"include": ["src", "bin"]
} }

View file

@ -245,34 +245,33 @@ cli.arguments('<command>').action((cmd) => {
}); });
/** /**
* @param {string} command * @param {string | undefined} command
*/ */
function isInternalCommand(command) { function isInternalCommand(command) {
return [ return (
'start', command &&
'build', [
'swizzle', 'start',
'deploy', 'build',
'serve', 'swizzle',
'clear', 'deploy',
'write-translations', 'serve',
'write-heading-ids', 'clear',
].includes(command); 'write-translations',
'write-heading-ids',
].includes(command)
);
} }
async function run() { if (!isInternalCommand(process.argv.slice(2)[0])) {
if (!isInternalCommand(process.argv.slice(2)[0])) { await externalCommand(cli, await resolveDir('.'));
await externalCommand(cli, await resolveDir('.'));
}
cli.parse(process.argv);
if (!process.argv.slice(2).length) {
cli.outputHelp();
}
} }
run(); if (!process.argv.slice(2).length) {
cli.outputHelp();
}
cli.parse(process.argv);
process.on('unhandledRejection', (err) => { process.on('unhandledRejection', (err) => {
logger.error(err); logger.error(err);

View file

@ -24,8 +24,8 @@
"docusaurus": "bin/docusaurus.mjs" "docusaurus": "bin/docusaurus.mjs"
}, },
"scripts": { "scripts": {
"build": "tsc && tsc -p tsconfig.client.json && node copyUntypedFiles.mjs", "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 --watch\" \"tsc -p tsconfig.client.json --watch\"" "watch": "node copyUntypedFiles.mjs && concurrently -n \"server,client\" --kill-others \"tsc -p tsconfig.server.json --watch\" \"tsc -p tsconfig.client.json --watch\""
}, },
"bugs": { "bugs": {
"url": "https://github.com/facebook/docusaurus/issues" "url": "https://github.com/facebook/docusaurus/issues"

View file

@ -1,12 +1,10 @@
// For editor typechecking; includes bin
{ {
"extends": "../../tsconfig.json", "extends": "./tsconfig.server.json",
"compilerOptions": { "compilerOptions": {
"incremental": true, "noEmit": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo", "rootDir": ".",
"rootDir": "src", "module": "esnext"
"outDir": "lib",
"allowJs": true
}, },
"include": ["src"], "include": ["src", "bin"]
"exclude": ["**/__tests__/**/*", "src/client"]
} }

View file

@ -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"]
}