UNPKG

voluptasmollitia

Version:
58 lines (52 loc) 2.05 kB
/** * @license * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Update `@firebase` dependency versions in a package.json to reflect the latest versions. * These can get out of sync when working on a new unreleased component in a branch while the * already-released component versions in its deps keep being updated with each release. * * Usage: node scripts/exp/update-internal-dep-versions.js --file [package.json file path] * * Example: node scripts/exp/update-internal-dep-versions.js --file packages-exp/functions-exp/package.json */ import { projectRoot } from '../utils'; import { mapPkgNameToPkgJson } from '../release/utils/workspace'; import { argv } from 'yargs'; import fs from 'mz/fs'; async function updateField(pkg: any, fieldName: string) { const field = pkg[fieldName]; for (const depName in field) { if (!depName.includes('@firebase') && depName !== 'firebase') continue; const depJson = await mapPkgNameToPkgJson(depName); if (!depJson.version) continue; field[depName] = depJson.version; } return { ...pkg, [fieldName]: field }; } async function updateInternalDepVersions() { const fileName = argv.file; if (!fileName) return; const pkg = require(`${projectRoot}/${fileName}`); let newPkg = await updateField(pkg, 'devDependencies'); newPkg = await updateField(newPkg, 'dependencies'); await fs.writeFile( `${projectRoot}/${fileName}`, JSON.stringify(newPkg, null, 2), { encoding: 'utf-8' } ); } updateInternalDepVersions();