jazelle/commands/localize.js (28 lines of code) (raw):
// @flow
const {getManifest} = require('../utils/get-manifest.js');
const {getAllDependencies} = require('../utils/get-all-dependencies.js');
const {write} = require('../utils/node-helpers.js');
/*::
export type LocalizeArgs = {
root: string,
};
export type Localize = LocalizeArgs => Promise<void>;
*/
const localize /*: Localize */ = async ({root}) => {
const {projects} = await getManifest({root});
const deps = /*:: await */ await getAllDependencies({root, projects});
const map = new Map();
for (const dep of deps) {
map.set(dep.meta.name, dep.meta.version);
}
await Promise.all(
deps.map(async dep => {
for (const key in dep.meta.dependencies) {
if (map.has(key)) {
dep.meta.dependencies[key] = map.get(key);
}
}
for (const key in dep.meta.devDependencies) {
if (map.has(key)) {
dep.meta.devDependencies[key] = map.get(key);
}
}
const file = `${dep.dir}/package.json`;
await write(file, JSON.stringify(dep.meta, null, 2) + '\n', 'utf8');
})
);
};
module.exports = {localize};