Bundle all plugins script
Summary: New script which bundles all plugins. It is faster to bundle them all in one script rather than call "build-plugin" for each of them. The new script will be used in CI to catch regressions when some plugins cannot be bundled into standalone packages. Reviewed By: passy Differential Revision: D26918103 fbshipit-source-id: dbc5c4cd706e8d585718a198dbd7ae9ffd988e28
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c065760d15
commit
58b2daea02
@@ -218,6 +218,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "cross-env NODE_ENV=production ./ts-node scripts/build-release.ts $@",
|
"build": "cross-env NODE_ENV=production ./ts-node scripts/build-release.ts $@",
|
||||||
"build-plugin": "./ts-node scripts/build-plugin.ts",
|
"build-plugin": "./ts-node scripts/build-plugin.ts",
|
||||||
|
"bundle-all-plugins": "./ts-node scripts/bundle-all-plugins.ts",
|
||||||
"build:dev": "cross-env NODE_ENV=development ./ts-node scripts/build-release.ts $@",
|
"build:dev": "cross-env NODE_ENV=development ./ts-node scripts/build-release.ts $@",
|
||||||
"build:eslint": "cd eslint-plugin-flipper && yarn build",
|
"build:eslint": "cd eslint-plugin-flipper && yarn build",
|
||||||
"build:themes": "lessc --js themes/light.less static/themes/light.css && lessc --js themes/dark.less static/themes/dark.css",
|
"build:themes": "lessc --js themes/light.less static/themes/light.css && lessc --js themes/dark.less static/themes/dark.css",
|
||||||
|
|||||||
55
desktop/scripts/bundle-all-plugins.ts
Normal file
55
desktop/scripts/bundle-all-plugins.ts
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {pluginsDir} from './paths';
|
||||||
|
import path from 'path';
|
||||||
|
import {runBuild} from 'flipper-pkg-lib';
|
||||||
|
import {getWorkspaces} from './workspaces';
|
||||||
|
|
||||||
|
async function bundleAllPlugins() {
|
||||||
|
const plugins = await getWorkspaces().then((workspaces) =>
|
||||||
|
workspaces.packages.filter((x) => x.isPlugin),
|
||||||
|
);
|
||||||
|
const errors = new Map<string, any>();
|
||||||
|
for (const plugin of plugins) {
|
||||||
|
const relativeDir = path.relative(pluginsDir, plugin.dir);
|
||||||
|
console.log(`Bundling "${relativeDir}"`);
|
||||||
|
console.time(`Finished bundling "${relativeDir}"`);
|
||||||
|
try {
|
||||||
|
await runBuild(plugin.dir, false);
|
||||||
|
} catch (err) {
|
||||||
|
console.log(`Failed to bundle "${relativeDir}": ${err.message}`);
|
||||||
|
errors.set(relativeDir, err);
|
||||||
|
} finally {
|
||||||
|
console.timeEnd(`Finished bundling "${relativeDir}"`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (errors.size) {
|
||||||
|
console.error('---');
|
||||||
|
for (const [plugin, error] of errors) {
|
||||||
|
console.error(`Failed to bundle ${plugin}`);
|
||||||
|
console.error(error);
|
||||||
|
console.error('---');
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`Failed to bundle ${errors.size} plugins: ${[...errors.keys()].join(
|
||||||
|
', ',
|
||||||
|
)}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bundleAllPlugins()
|
||||||
|
.then(() => {
|
||||||
|
process.exit(0);
|
||||||
|
})
|
||||||
|
.catch((err: any) => {
|
||||||
|
console.error(err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user