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
This commit is contained in:
committed by
Facebook Github Bot
parent
5b68c59b5c
commit
22f9401e05
@@ -12,15 +12,15 @@ const {
|
|||||||
buildFolder,
|
buildFolder,
|
||||||
compile,
|
compile,
|
||||||
compileDefaultPlugins,
|
compileDefaultPlugins,
|
||||||
|
getVersionNumber,
|
||||||
} = require('./build-utils.js');
|
} = require('./build-utils.js');
|
||||||
|
|
||||||
function preludeBundle(dir) {
|
function preludeBundle(dir, versionNumber) {
|
||||||
return new Promise((resolve, reject) =>
|
return new Promise((resolve, reject) =>
|
||||||
lineReplace({
|
lineReplace({
|
||||||
file: path.join(dir, 'bundle.js'),
|
file: path.join(dir, 'bundle.js'),
|
||||||
line: 1,
|
line: 1,
|
||||||
text:
|
text: `var __DEV__=false; global.electronRequire = require; global.performance = require("perf_hooks").performance;global.__VERSION__="${versionNumber}";`,
|
||||||
'var __DEV__=false; global.electronRequire = require; global.performance = require("perf_hooks").performance;',
|
|
||||||
addNewLine: true,
|
addNewLine: true,
|
||||||
callback: resolve,
|
callback: resolve,
|
||||||
}),
|
}),
|
||||||
@@ -56,7 +56,8 @@ function preludeBundle(dir) {
|
|||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log('Created build directory', buildDir);
|
console.log('Created build directory', buildDir);
|
||||||
await compile(buildDir, path.join(__dirname, '..', 'headless', 'index.js'));
|
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 compileDefaultPlugins(path.join(distDir, 'plugins'));
|
||||||
await createBinary([
|
await createBinary([
|
||||||
path.join(buildDir, 'bundle.js'),
|
path.join(buildDir, 'bundle.js'),
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const {
|
|||||||
compile,
|
compile,
|
||||||
die,
|
die,
|
||||||
compileDefaultPlugins,
|
compileDefaultPlugins,
|
||||||
|
getVersionNumber,
|
||||||
} = require('./build-utils.js');
|
} = require('./build-utils.js');
|
||||||
|
|
||||||
function generateManifest(versionNumber) {
|
function generateManifest(versionNumber) {
|
||||||
@@ -29,7 +30,7 @@ function generateManifest(versionNumber) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function modifyPackageManifest(buildFolder) {
|
function modifyPackageManifest(buildFolder, versionNumber) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log('Creating package.json manifest');
|
console.log('Creating package.json manifest');
|
||||||
const manifest = require('../package.json');
|
const manifest = require('../package.json');
|
||||||
@@ -40,28 +41,11 @@ function modifyPackageManifest(buildFolder) {
|
|||||||
// because all dependencies from the root-folder are already bundled by metro.
|
// because all dependencies from the root-folder are already bundled by metro.
|
||||||
manifest.dependencies = manifestStatic.dependencies;
|
manifest.dependencies = manifestStatic.dependencies;
|
||||||
manifest.main = 'index.js';
|
manifest.main = 'index.js';
|
||||||
|
manifest.version = versionNumber;
|
||||||
const buildNumber = process.argv.join(' ').match(/--version=(\d+)/);
|
fs.writeFileSync(
|
||||||
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'),
|
path.join(buildFolder, 'package.json'),
|
||||||
JSON.stringify(manifest, null, ' '),
|
JSON.stringify(manifest, null, ' '),
|
||||||
err => {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
resolve(manifest.version);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
}).catch(die);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildDist(buildFolder) {
|
function buildDist(buildFolder) {
|
||||||
@@ -112,32 +96,20 @@ function buildDist(buildFolder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function copyStaticFolder(buildFolder) {
|
function copyStaticFolder(buildFolder) {
|
||||||
return new Promise((resolve, reject) => {
|
fs.copySync(path.join(__dirname, '..', 'static'), buildFolder, {
|
||||||
fs.copy(
|
|
||||||
path.join(__dirname, '..', 'static'),
|
|
||||||
buildFolder,
|
|
||||||
{
|
|
||||||
dereference: true,
|
dereference: true,
|
||||||
},
|
});
|
||||||
err => {
|
|
||||||
if (err) {
|
|
||||||
reject(err);
|
|
||||||
} else {
|
|
||||||
resolve();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}).catch(die);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
const dir = await buildFolder();
|
const dir = await buildFolder();
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log('Created build directory', dir);
|
console.log('Created build directory', dir);
|
||||||
await copyStaticFolder(dir);
|
copyStaticFolder(dir);
|
||||||
await compileDefaultPlugins(path.join(dir, 'defaultPlugins'));
|
await compileDefaultPlugins(path.join(dir, 'defaultPlugins'));
|
||||||
await compile(dir, path.join(__dirname, '..', 'src', 'init.js'));
|
await compile(dir, path.join(__dirname, '..', 'src', 'init.js'));
|
||||||
const versionNumber = await modifyPackageManifest(dir);
|
const versionNumber = getVersionNumber();
|
||||||
|
modifyPackageManifest(dir, versionNumber);
|
||||||
generateManifest(versionNumber);
|
generateManifest(versionNumber);
|
||||||
await buildDist(dir);
|
await buildDist(dir);
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
|
|||||||
@@ -86,9 +86,19 @@ function buildFolder() {
|
|||||||
}).catch(die);
|
}).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 = {
|
module.exports = {
|
||||||
buildFolder,
|
buildFolder,
|
||||||
compile,
|
compile,
|
||||||
die,
|
die,
|
||||||
compileDefaultPlugins,
|
compileDefaultPlugins,
|
||||||
|
getVersionNumber,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user