diff --git a/.gitignore b/.gitignore index ee4e6f4faa2cb1..05f5291b2e4d65 100644 --- a/.gitignore +++ b/.gitignore @@ -61,9 +61,6 @@ npm-debug.log* .ci/bash_standard_lib.sh .gradle -# apm plugin -/x-pack/plugins/apm/tsconfig.json -apm.tsconfig.json ## @cypress/snapshot from apm plugin snapshots.js diff --git a/x-pack/plugins/apm/scripts/optimize-tsconfig/optimize.js b/x-pack/plugins/apm/scripts/optimize-tsconfig/optimize.js index f466b7ff72c49f..ae941c1d2de0c9 100644 --- a/x-pack/plugins/apm/scripts/optimize-tsconfig/optimize.js +++ b/x-pack/plugins/apm/scripts/optimize-tsconfig/optimize.js @@ -16,6 +16,7 @@ const { omit } = require('lodash'); const readFile = promisify(fs.readFile); const writeFile = promisify(fs.writeFile); +const unlink = promisify(fs.unlink); const { xpackRoot, @@ -72,6 +73,10 @@ async function setIgnoreChanges() { } } +async function deleteApmTsConfig() { + await unlink(path.resolve(kibanaRoot, 'x-pack/plugins/apm', 'tsconfig.json')); +} + async function optimizeTsConfig() { await unoptimizeTsConfig(); @@ -79,6 +84,8 @@ async function optimizeTsConfig() { await addApmFilesToXpackTsConfig(); + await deleteApmTsConfig(); + await setIgnoreChanges(); // eslint-disable-next-line no-console console.log( diff --git a/x-pack/plugins/apm/scripts/optimize-tsconfig/paths.js b/x-pack/plugins/apm/scripts/optimize-tsconfig/paths.js index 9788de37bdb33c..d697c073fa17a0 100644 --- a/x-pack/plugins/apm/scripts/optimize-tsconfig/paths.js +++ b/x-pack/plugins/apm/scripts/optimize-tsconfig/paths.js @@ -16,6 +16,7 @@ const filesToIgnore = [ path.resolve(xpackRoot, 'tsconfig.json'), path.resolve(kibanaRoot, 'tsconfig.json'), path.resolve(kibanaRoot, 'tsconfig.base.json'), + path.resolve(kibanaRoot, 'x-pack/plugins/apm', 'tsconfig.json'), ]; module.exports = { diff --git a/x-pack/plugins/apm/scripts/precommit.js b/x-pack/plugins/apm/scripts/precommit.js index c741be6c0e9a6b..42fe0734d9160d 100644 --- a/x-pack/plugins/apm/scripts/precommit.js +++ b/x-pack/plugins/apm/scripts/precommit.js @@ -11,10 +11,24 @@ const execa = require('execa'); const Listr = require('listr'); const { resolve } = require('path'); +const { argv } = require('yargs'); -const cwd = resolve(__dirname, '../../../..'); +const root = resolve(__dirname, '../../../..'); -const execaOpts = { cwd, stderr: 'inherit' }; +const execaOpts = { cwd: root, stderr: 'pipe' }; + +const useOptimizedTsConfig = !!argv.optimizeTs; + +const tsconfig = useOptimizedTsConfig + ? resolve(root, 'x-pack/tsconfig.json') + : resolve(root, 'x-pack/plugins/apm/tsconfig.json'); + +console.log( + resolve( + __dirname, + useOptimizedTsConfig ? './optimize-tsonfig.js' : './unoptimize-tsconfig.js' + ) +); const tasks = new Listr( [ @@ -37,9 +51,27 @@ const tasks = new Listr( title: 'Typescript', task: () => execa( - require.resolve('typescript/bin/tsc'), - ['--project', resolve(__dirname, '../tsconfig.json'), '--pretty'], + 'node', + [ + resolve( + __dirname, + useOptimizedTsConfig + ? './optimize-tsconfig.js' + : './unoptimize-tsconfig.js' + ), + ], execaOpts + ).then(() => + execa( + require.resolve('typescript/bin/tsc'), + [ + '--project', + tsconfig, + '--pretty', + ...(useOptimizedTsConfig ? ['--noEmit'] : []), + ], + execaOpts + ) ), }, { @@ -47,7 +79,7 @@ const tasks = new Listr( task: () => execa('node', [resolve(__dirname, 'eslint.js')], execaOpts), }, ], - { exitOnError: false, concurrent: true } + { exitOnError: true, concurrent: true } ); tasks.run().catch((error) => {