diff --git a/experimental/babel-preset-env/.travis.yml b/experimental/babel-preset-env/.travis.yml index b216ccbdbc..1e9572aa38 100644 --- a/experimental/babel-preset-env/.travis.yml +++ b/experimental/babel-preset-env/.travis.yml @@ -25,13 +25,16 @@ install: - $PKG_CMD install script: - 'if [ -n "${LINT-}" ]; then $PKG_CMD run lint ; fi' - - 'if [ -z "${LINT-}" ]; then $PKG_CMD run test-ci ; fi' + - 'if [ -n "${DATA_CHECK-}" ]; then $PKG_CMD run build-data -- --check ; fi' + - 'if [ -z "${LINT-}" ] && [ -z "${DATA_CHECK-}" ]; then $PKG_CMD run test-ci ; fi' matrix: fast_finish: true include: - node_js: "node" env: LINT=true PKG_CMD="npm" + - node_js: "node" + env: DATA_CHECK=true PKG_CMD="npm" exclude: - node_js: "4" env: PKG_CMD="yarn" -after_success: 'if [ -z "${LINT-}" ]; then npm run coverage-ci ; fi' +after_success: 'if [ -z "${LINT-}" ] && [ -z "${DATA_CHECK-}" ]; then npm run coverage-ci ; fi' diff --git a/experimental/babel-preset-env/scripts/build-data.js b/experimental/babel-preset-env/scripts/build-data.js index 0de81f2d8e..6694aaba67 100644 --- a/experimental/babel-preset-env/scripts/build-data.js +++ b/experimental/babel-preset-env/scripts/build-data.js @@ -5,6 +5,7 @@ const path = require("path"); const flatten = require("lodash/flatten"); const flattenDeep = require("lodash/flattenDeep"); +const isEqual = require("lodash/isEqual"); const mapValues = require("lodash/mapValues"); const pluginFeatures = require("../data/plugin-features"); const builtInFeatures = require("../data/built-in-features"); @@ -197,12 +198,36 @@ const generateData = (environments, features) => { }); }; +const pluginsDataPath = path.join(__dirname, "../data/plugins.json"); +const builtInsDataPath = path.join(__dirname, "../data/built-ins.json"); + +const newPluginData = generateData(environments, pluginFeatures); +const newBuiltInsData = generateData(environments, builtInFeatures); + +if (process.argv[2] === "--check") { + const currentPluginData = require(pluginsDataPath); + const currentBuiltInsData = require(builtInsDataPath); + + if ( + !isEqual(currentPluginData, newPluginData) || + !isEqual(currentBuiltInsData, newBuiltInsData) + ) { + console.error( + "The newly generated plugin/built-in data does not match the current " + + "files. Re-run `npm run build-data`.", + ); + process.exit(1); + } + + process.exit(0); +} + fs.writeFileSync( - path.join(__dirname, "../data/plugins.json"), - JSON.stringify(generateData(environments, pluginFeatures), null, 2) + "\n", + pluginsDataPath, + JSON.stringify(newPluginData, null, 2) + "\n", ); fs.writeFileSync( - path.join(__dirname, "../data/built-ins.json"), - JSON.stringify(generateData(environments, builtInFeatures), null, 2) + "\n", + builtInsDataPath, + JSON.stringify(newBuiltInsData, null, 2) + "\n", );