From d8b3ca27abda552b9db77ad51e178a2f9c471b0b Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 20 Feb 2018 16:28:22 -0700 Subject: [PATCH] [plugin-helpers] allow opt-ing out of dependency installation (#16816) * [kbn-plugin-helpers] allow opt-ing out of dependency installation * [plugin-helpers] rename buildIgnoreDependencies to skipInstallDependencies * [plugin-helpers] use noop3 for test * [plugin-helpers] fix test description * [plugin-helpers] fix assertion --- packages/kbn-plugin-helpers/README.md | 1 + .../kbn-plugin-helpers/lib/plugin_config.js | 1 + .../create_build_test_plugin/package.json | 2 +- .../tasks/build/create_build.js | 4 +++ .../tasks/build/create_build.test.js | 27 +++++++++++++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/kbn-plugin-helpers/README.md b/packages/kbn-plugin-helpers/README.md index 5c0739a55f3d..47353c90e6e9 100644 --- a/packages/kbn-plugin-helpers/README.md +++ b/packages/kbn-plugin-helpers/README.md @@ -69,5 +69,6 @@ Setting | Description ------- | ----------- `skipArchive` | Don't create the zip file, leave the build path alone `buildDestination` | Target path for the build output, absolute or relative to the plugin root +`skipInstallDependencies` | Don't install dependencies defined in package.json into build output `buildVersion` | Version for the build output `kibanaVersion` | Kibana version for the build output (added to package.json) diff --git a/packages/kbn-plugin-helpers/lib/plugin_config.js b/packages/kbn-plugin-helpers/lib/plugin_config.js index 3fb10c030e1d..cc50d0a255d6 100644 --- a/packages/kbn-plugin-helpers/lib/plugin_config.js +++ b/packages/kbn-plugin-helpers/lib/plugin_config.js @@ -20,6 +20,7 @@ module.exports = function (root) { kibanaRoot: resolve(root, '../../kibana'), serverTestPatterns: ['server/**/__tests__/**/*.js'], buildSourcePatterns: buildSourcePatterns, + skipInstallDependencies: false, id: pkg.name, pkg: pkg, version: pkg.version, diff --git a/packages/kbn-plugin-helpers/tasks/build/__fixtures__/create_build_test_plugin/package.json b/packages/kbn-plugin-helpers/tasks/build/__fixtures__/create_build_test_plugin/package.json index 5fa112494e3f..c4ed8f69c8ea 100644 --- a/packages/kbn-plugin-helpers/tasks/build/__fixtures__/create_build_test_plugin/package.json +++ b/packages/kbn-plugin-helpers/tasks/build/__fixtures__/create_build_test_plugin/package.json @@ -5,7 +5,7 @@ "version": "6.0.0" }, "dependencies": { - + "noop3": "999.999.999" }, "devDependencies": { diff --git a/packages/kbn-plugin-helpers/tasks/build/create_build.js b/packages/kbn-plugin-helpers/tasks/build/create_build.js index 58e82f392220..9bb3d18d838e 100644 --- a/packages/kbn-plugin-helpers/tasks/build/create_build.js +++ b/packages/kbn-plugin-helpers/tasks/build/create_build.js @@ -53,6 +53,10 @@ module.exports = function createBuild(plugin, buildTarget, buildVersion, kibanaV }); }) .then(function () { + if (plugin.skipInstallDependencies) { + return; + } + // install packages in build const options = { cwd: buildRoot, diff --git a/packages/kbn-plugin-helpers/tasks/build/create_build.test.js b/packages/kbn-plugin-helpers/tasks/build/create_build.test.js index c6b9e91c094d..7b2e8d1ee59e 100644 --- a/packages/kbn-plugin-helpers/tasks/build/create_build.test.js +++ b/packages/kbn-plugin-helpers/tasks/build/create_build.test.js @@ -1,4 +1,5 @@ const { resolve } = require('path'); +const { readdirSync } = require('fs'); const del = require('del'); const createBuild = require('./create_build'); @@ -37,4 +38,30 @@ describe('creating the build', () => { expect(pkg.build.git).not.toBeUndefined(); expect(pkg.build.date).not.toBeUndefined(); }); + + describe('skipInstallDependencies = false', () => { + it('installs node_modules as a part of build', async () => { + expect(PLUGIN.skipInstallDependencies).toBe(false); + + await createBuild(PLUGIN, buildTarget, buildVersion, kibanaVersion, buildFiles); + + expect(readdirSync(resolve(PLUGIN_BUILD_TARGET))).toContain('node_modules'); + expect(readdirSync(resolve(PLUGIN_BUILD_TARGET, 'node_modules'))).toContain('noop3'); + }); + }); + + describe('skipInstallDependencies = true', () => { + // set skipInstallDependencies to true for these tests + beforeEach(() => PLUGIN.skipInstallDependencies = true); + // set it back to false after + afterEach(() => PLUGIN.skipInstallDependencies = false); + + it('does not install node_modules as a part of build', async () => { + expect(PLUGIN.skipInstallDependencies).toBe(true); + + await createBuild(PLUGIN, buildTarget, buildVersion, kibanaVersion, buildFiles); + + expect(readdirSync(resolve(PLUGIN_BUILD_TARGET))).not.toContain('node_modules'); + }); + }); });