From 12c64a2d11bb285537aa9926226183792debe2ac Mon Sep 17 00:00:00 2001 From: Bassel Kanso Date: Tue, 17 May 2022 16:40:09 +0300 Subject: [PATCH] refactor resolveOutDir in typescript/utils --- .../core/strapi/lib/commands/admin-create.js | 6 ++---- packages/core/strapi/lib/commands/admin-reset.js | 6 ++---- packages/core/strapi/lib/commands/build.js | 6 ++---- .../strapi/lib/commands/configurationDump.js | 6 ++---- .../strapi/lib/commands/configurationRestore.js | 6 ++---- packages/core/strapi/lib/commands/console.js | 6 ++---- packages/core/strapi/lib/commands/develop.js | 6 ++---- packages/core/strapi/lib/commands/routes/list.js | 6 ++---- packages/core/strapi/lib/commands/start.js | 11 +++++++---- packages/core/strapi/lib/commands/watchAdmin.js | 6 ++---- packages/utils/typescript/lib/utils/index.js | 2 ++ .../utils/typescript/lib/utils/resolve-outdir.js | 16 ++++++++++++++++ 12 files changed, 43 insertions(+), 40 deletions(-) create mode 100644 packages/utils/typescript/lib/utils/resolve-outdir.js diff --git a/packages/core/strapi/lib/commands/admin-create.js b/packages/core/strapi/lib/commands/admin-create.js index c1b741a982..1a893050e9 100644 --- a/packages/core/strapi/lib/commands/admin-create.js +++ b/packages/core/strapi/lib/commands/admin-create.js @@ -94,9 +94,7 @@ async function createAdmin({ email, password, firstname, lastname }) { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; + const outDir = await tsUtils.resolveOutDir(appDir); if (isTSProject) await tsUtils.compile(appDir, { @@ -104,7 +102,7 @@ async function createAdmin({ email, password, firstname, lastname }) { configOptions: { options: { incremental: true } }, }); - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const distDir = isTSProject ? outDir : appDir; const app = await strapi({ appDir, distDir }).load(); diff --git a/packages/core/strapi/lib/commands/admin-reset.js b/packages/core/strapi/lib/commands/admin-reset.js index 013b581fed..3afdd2af4c 100644 --- a/packages/core/strapi/lib/commands/admin-reset.js +++ b/packages/core/strapi/lib/commands/admin-reset.js @@ -46,9 +46,7 @@ async function changePassword({ email, password }) { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; + const outDir = await tsUtils.resolveOutDir(appDir); if (isTSProject) await tsUtils.compile(appDir, { @@ -56,7 +54,7 @@ async function changePassword({ email, password }) { configOptions: { options: { incremental: true } }, }); - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const distDir = isTSProject ? outDir : appDir; const app = await strapi({ appDir, distDir }).load(); diff --git a/packages/core/strapi/lib/commands/build.js b/packages/core/strapi/lib/commands/build.js index 08e45dc72c..bc1f595903 100644 --- a/packages/core/strapi/lib/commands/build.js +++ b/packages/core/strapi/lib/commands/build.js @@ -11,16 +11,14 @@ module.exports = async ({ optimization, forceBuild = true }) => { const srcDir = process.cwd(); const useTypeScriptServer = await tsUtils.isUsingTypeScript(srcDir); - const compiledDirectoryPath = useTypeScriptServer - ? tsUtils.resolveConfigOptions(`${srcDir}/tsconfig.json`).options.outDir - : null; + const outDir = await tsUtils.resolveOutDir(srcDir); // Typescript if (useTypeScriptServer) { await buildTypeScript({ srcDir, watch: false }); // Update the dir path for the next steps - buildDestDir = compiledDirectoryPath; + buildDestDir = outDir; } await buildAdmin({ diff --git a/packages/core/strapi/lib/commands/configurationDump.js b/packages/core/strapi/lib/commands/configurationDump.js index c25699e622..72258cee83 100644 --- a/packages/core/strapi/lib/commands/configurationDump.js +++ b/packages/core/strapi/lib/commands/configurationDump.js @@ -16,16 +16,14 @@ module.exports = async function({ file: filePath, pretty }) { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; + const outDir = await tsUtils.resolveOutDir(appDir); if (isTSProject) await tsUtils.compile(appDir, { watch: false, configOptions: { options: { incremental: true } }, }); - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const distDir = isTSProject ? outDir : appDir; const app = await strapi({ appDir, distDir }).load(); diff --git a/packages/core/strapi/lib/commands/configurationRestore.js b/packages/core/strapi/lib/commands/configurationRestore.js index 5f9dad0937..a9f0fa1488 100644 --- a/packages/core/strapi/lib/commands/configurationRestore.js +++ b/packages/core/strapi/lib/commands/configurationRestore.js @@ -17,9 +17,7 @@ module.exports = async function({ file: filePath, strategy = 'replace' }) { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; + const outDir = await tsUtils.resolveOutDir(appDir); if (isTSProject) await tsUtils.compile(appDir, { @@ -27,7 +25,7 @@ module.exports = async function({ file: filePath, strategy = 'replace' }) { configOptions: { options: { incremental: true } }, }); - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const distDir = isTSProject ? outDir : appDir; const app = await strapi({ appDir, distDir }).load(); diff --git a/packages/core/strapi/lib/commands/console.js b/packages/core/strapi/lib/commands/console.js index 5d76774352..ded57dbf86 100644 --- a/packages/core/strapi/lib/commands/console.js +++ b/packages/core/strapi/lib/commands/console.js @@ -12,9 +12,7 @@ module.exports = async () => { // Now load up the Strapi framework for real. const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : undefined; + const outDir = await tsUtils.resolveOutDir(appDir); if (isTSProject) await tsUtils.compile(appDir, { @@ -22,7 +20,7 @@ module.exports = async () => { configOptions: { options: { incremental: true } }, }); - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const distDir = isTSProject ? outDir : appDir; const app = await strapi({ appDir, distDir }).load(); diff --git a/packages/core/strapi/lib/commands/develop.js b/packages/core/strapi/lib/commands/develop.js index 6f50393c8a..184c68b8d7 100644 --- a/packages/core/strapi/lib/commands/develop.js +++ b/packages/core/strapi/lib/commands/develop.js @@ -22,10 +22,8 @@ module.exports = async function({ build, watchAdmin, polling, browser }) { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const outDir = await tsUtils.resolveOutDir(appDir); + const distDir = isTSProject ? outDir : appDir; try { if (cluster.isMaster || cluster.isPrimary) { diff --git a/packages/core/strapi/lib/commands/routes/list.js b/packages/core/strapi/lib/commands/routes/list.js index 5ae320c59a..78369a694c 100644 --- a/packages/core/strapi/lib/commands/routes/list.js +++ b/packages/core/strapi/lib/commands/routes/list.js @@ -11,9 +11,7 @@ module.exports = async function() { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; + const outDir = await tsUtils.resolveOutDir(appDir); if (isTSProject) await tsUtils.compile(appDir, { @@ -21,7 +19,7 @@ module.exports = async function() { configOptions: { options: { incremental: true } }, }); - const distDir = isTSProject ? compiledDirectoryPath : appDir; + const distDir = isTSProject ? outDir : appDir; const app = await strapi({ appDir, distDir }).load(); diff --git a/packages/core/strapi/lib/commands/start.js b/packages/core/strapi/lib/commands/start.js index f480f9cbee..92cf4a794e 100644 --- a/packages/core/strapi/lib/commands/start.js +++ b/packages/core/strapi/lib/commands/start.js @@ -8,10 +8,13 @@ const strapi = require('../index'); module.exports = async specifiedDir => { const appDir = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(appDir); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${appDir}/tsconfig.json`).options.outDir - : null; - const distDir = isTSProject && !specifiedDir ? compiledDirectoryPath : specifiedDir; + const outDir = await tsUtils.resolveOutDir(appDir); + if (isTSProject) + await tsUtils.compile(appDir, { + watch: false, + configOptions: { options: { incremental: true } }, + }); + const distDir = isTSProject && !specifiedDir ? outDir : specifiedDir; strapi({ distDir }).start(); }; diff --git a/packages/core/strapi/lib/commands/watchAdmin.js b/packages/core/strapi/lib/commands/watchAdmin.js index 647e0b7856..343e46211e 100644 --- a/packages/core/strapi/lib/commands/watchAdmin.js +++ b/packages/core/strapi/lib/commands/watchAdmin.js @@ -12,10 +12,8 @@ module.exports = async function({ browser }) { const currentDirectory = process.cwd(); const isTSProject = await tsUtils.isUsingTypeScript(currentDirectory); - const compiledDirectoryPath = isTSProject - ? tsUtils.resolveConfigOptions(`${currentDirectory}/tsconfig.json`).options.outDir - : null; - const buildDestDir = isTSProject ? compiledDirectoryPath : currentDirectory; + const outDir = await tsUtils.resolveOutDir(currentDirectory); + const buildDestDir = isTSProject ? outDir : currentDirectory; const strapiInstance = strapi({ distDir: buildDestDir, diff --git a/packages/utils/typescript/lib/utils/index.js b/packages/utils/typescript/lib/utils/index.js index c655a8b4a4..ef3dd023ca 100644 --- a/packages/utils/typescript/lib/utils/index.js +++ b/packages/utils/typescript/lib/utils/index.js @@ -6,6 +6,7 @@ const getConfigPath = require('./get-config-path'); const reportDiagnostics = require('./report-diagnostics'); const resolveConfigOptions = require('./resolve-config-options'); const formatHost = require('./format-host'); +const resolveOutDir = require('./resolve-outdir'); module.exports = { isUsingTypeScript, @@ -14,4 +15,5 @@ module.exports = { reportDiagnostics, resolveConfigOptions, formatHost, + resolveOutDir, }; diff --git a/packages/utils/typescript/lib/utils/resolve-outdir.js b/packages/utils/typescript/lib/utils/resolve-outdir.js new file mode 100644 index 0000000000..15b129e59e --- /dev/null +++ b/packages/utils/typescript/lib/utils/resolve-outdir.js @@ -0,0 +1,16 @@ +'use strict'; +const resolveConfigOptions = require('./resolve-config-options'); +const isUsingTypescript = require('./is-using-typescript'); + +const DEFAULT_TS_CONFIG_FILENAME = 'tsconfig.json'; +/** + * Checks if `dir` is a using TypeScript (whether there is a tsconfig file or not) + * @param {string} dir + * @param {string | undefined} configFilename + * @returns {string | undefined} + */ +module.exports = async (dir, configFilename = DEFAULT_TS_CONFIG_FILENAME) => { + return (await isUsingTypescript(dir)) + ? resolveConfigOptions(`${dir}/${configFilename}`).options.outDir + : undefined; +};