kibana/packages/kbn-interpreter/tasks/build/cli.js
Spencer e618cf43da
[6.x] [@kbn/interpreter] improve build/packaging (#26096) (#26136)
* [@kbn/interpreter] improve build/packaging (#26096)

Summary of changes:

 - move all build artifacts under `target` directory
 - run babel and webpack in parallel
 - support optional watch and sourcemaps in build
 - expose /common /public /plugin /server sub-exports as index.js
 - avoid importing deeply from `@kbn/interpreter`
 - move a couple missed dependencies from x-pack to kibana
 - remove custom babel-register implementation

* fix bad conflict resolution
2018-11-24 12:26:07 -07:00

113 lines
2.8 KiB
JavaScript

/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
const { relative } = require('path');
const getopts = require('getopts');
const del = require('del');
const supportsColor = require('supports-color');
const { ToolingLog, withProcRunner, pickLevelFromFlags } = require('@kbn/dev-utils');
const {
ROOT_DIR,
PLUGIN_SOURCE_DIR,
BUILD_DIR,
WEBPACK_CONFIG_PATH
} = require('./paths');
const unknownFlags = [];
const flags = getopts(process.argv, {
boolean: [
'watch',
'dev',
'help',
'debug'
],
unknown(name) {
unknownFlags.push(name);
}
});
const log = new ToolingLog({
level: pickLevelFromFlags(flags),
writeTo: process.stdout
});
if (unknownFlags.length) {
log.error(`Unknown flag(s): ${unknownFlags.join(', ')}`);
flags.help = true;
process.exitCode = 1;
}
if (flags.help) {
log.info(`
Simple build tool for @kbn/interpreter package
--dev Build for development, include source maps
--watch Run in watch mode
--debug Turn on debug logging
`);
process.exit();
}
withProcRunner(log, async (proc) => {
log.info('Deleting old output');
await del(BUILD_DIR);
const cwd = ROOT_DIR;
const env = { ...process.env };
if (supportsColor.stdout) {
env.FORCE_COLOR = 'true';
}
log.info(`Starting babel and webpack${flags.watch ? ' in watch mode' : ''}`);
await Promise.all([
proc.run('babel ', {
cmd: 'babel',
args: [
'src',
'--ignore', `${relative(cwd, PLUGIN_SOURCE_DIR)},*.test.js`,
'--out-dir', relative(cwd, BUILD_DIR),
'--copy-files',
...(flags.dev ? ['--source-maps', 'inline'] : []),
...(flags.watch ? ['--watch'] : ['--quiet'])
],
wait: true,
env,
cwd
}),
proc.run('webpack', {
cmd: 'webpack',
args: [
'--config', relative(cwd, WEBPACK_CONFIG_PATH),
'--env.sourceMaps', String(Boolean(flags.dev)),
...(flags.watch ? ['--watch'] : []),
],
wait: true,
env,
cwd
}),
]);
log.success('Complete');
}).catch((error) => {
log.error(error);
process.exit(1);
});