From 22f9401e0513a8144dde75dcf62548e0bf62c0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=BCchele?= Date: Mon, 4 Feb 2019 07:21:55 -0800 Subject: [PATCH] move version number to build-utils Summary: * The generation of the version number is moved to build-utils so it can be used from the headless build process as well. * The prelude script for the headless version exposes the version number on `global.__VERSION__` * While at this file, moving some functions in the build process to use the Sync version. Doesn't matter for the build process anyways and the syntax is much nicer. Reviewed By: passy Differential Revision: D13843678 fbshipit-source-id: 7df8364044ab6ebc83a4060aab2e3a42ae48a934 --- scripts/build-headless.js | 9 ++++--- scripts/build-release.js | 54 ++++++++++----------------------------- scripts/build-utils.js | 10 ++++++++ 3 files changed, 28 insertions(+), 45 deletions(-) diff --git a/scripts/build-headless.js b/scripts/build-headless.js index 5a86a477b..42b8789ac 100644 --- a/scripts/build-headless.js +++ b/scripts/build-headless.js @@ -12,15 +12,15 @@ const { buildFolder, compile, compileDefaultPlugins, + getVersionNumber, } = require('./build-utils.js'); -function preludeBundle(dir) { +function preludeBundle(dir, versionNumber) { return new Promise((resolve, reject) => lineReplace({ file: path.join(dir, 'bundle.js'), line: 1, - text: - 'var __DEV__=false; global.electronRequire = require; global.performance = require("perf_hooks").performance;', + text: `var __DEV__=false; global.electronRequire = require; global.performance = require("perf_hooks").performance;global.__VERSION__="${versionNumber}";`, addNewLine: true, callback: resolve, }), @@ -56,7 +56,8 @@ function preludeBundle(dir) { // eslint-disable-next-line no-console console.log('Created build directory', buildDir); await compile(buildDir, path.join(__dirname, '..', 'headless', 'index.js')); - await preludeBundle(buildDir); + const versionNumber = getVersionNumber(); + await preludeBundle(buildDir, versionNumber); await compileDefaultPlugins(path.join(distDir, 'plugins')); await createBinary([ path.join(buildDir, 'bundle.js'), diff --git a/scripts/build-release.js b/scripts/build-release.js index e21ce017c..fba296a7e 100755 --- a/scripts/build-release.js +++ b/scripts/build-release.js @@ -13,6 +13,7 @@ const { compile, die, compileDefaultPlugins, + getVersionNumber, } = require('./build-utils.js'); function generateManifest(versionNumber) { @@ -29,7 +30,7 @@ function generateManifest(versionNumber) { ); } -function modifyPackageManifest(buildFolder) { +function modifyPackageManifest(buildFolder, versionNumber) { // eslint-disable-next-line no-console console.log('Creating package.json manifest'); const manifest = require('../package.json'); @@ -40,28 +41,11 @@ function modifyPackageManifest(buildFolder) { // because all dependencies from the root-folder are already bundled by metro. manifest.dependencies = manifestStatic.dependencies; manifest.main = 'index.js'; - - const buildNumber = process.argv.join(' ').match(/--version=(\d+)/); - if (buildNumber && buildNumber.length > 0) { - manifest.version = [ - ...manifest.version.split('.').slice(0, 2), - buildNumber[1], - ].join('.'); - } - - return new Promise((resolve, reject) => { - fs.writeFile( - path.join(buildFolder, 'package.json'), - JSON.stringify(manifest, null, ' '), - err => { - if (err) { - reject(err); - } else { - resolve(manifest.version); - } - }, - ); - }).catch(die); + manifest.version = versionNumber; + fs.writeFileSync( + path.join(buildFolder, 'package.json'), + JSON.stringify(manifest, null, ' '), + ); } function buildDist(buildFolder) { @@ -112,32 +96,20 @@ function buildDist(buildFolder) { } function copyStaticFolder(buildFolder) { - return new Promise((resolve, reject) => { - fs.copy( - path.join(__dirname, '..', 'static'), - buildFolder, - { - dereference: true, - }, - err => { - if (err) { - reject(err); - } else { - resolve(); - } - }, - ); - }).catch(die); + fs.copySync(path.join(__dirname, '..', 'static'), buildFolder, { + dereference: true, + }); } (async () => { const dir = await buildFolder(); // eslint-disable-next-line no-console console.log('Created build directory', dir); - await copyStaticFolder(dir); + copyStaticFolder(dir); await compileDefaultPlugins(path.join(dir, 'defaultPlugins')); await compile(dir, path.join(__dirname, '..', 'src', 'init.js')); - const versionNumber = await modifyPackageManifest(dir); + const versionNumber = getVersionNumber(); + modifyPackageManifest(dir, versionNumber); generateManifest(versionNumber); await buildDist(dir); // eslint-disable-next-line no-console diff --git a/scripts/build-utils.js b/scripts/build-utils.js index fa94e0ac2..dae354468 100644 --- a/scripts/build-utils.js +++ b/scripts/build-utils.js @@ -86,9 +86,19 @@ function buildFolder() { }).catch(die); } +function getVersionNumber() { + let {version} = require('../package.json'); + const buildNumber = process.argv.join(' ').match(/--version=(\d+)/); + if (buildNumber && buildNumber.length > 0) { + version = [...version.split('.').slice(0, 2), buildNumber[1]].join('.'); + } + return version; +} + module.exports = { buildFolder, compile, die, compileDefaultPlugins, + getVersionNumber, };