import { readFileSync, writeFileSync, readdirSync } from 'fs'; import { join } from 'path'; import { format } from 'prettier-package-json'; const dist = join(__dirname, '../../dist/packages'); const root = join(__dirname, '../../packages'); export function syncVersions(workspaceVersion) { const INDEX_OF_STYLES = join( __dirname, '../../dist/packages/core/styles/index.js' ); const INDEX_OF_STYLES_SOURCE = join( __dirname, '../../packages/core/styles/src/index.ts' ); const versionRegExp = new RegExp(/(\d+\.\d+\.\d+(-\d+(\.\d+)?)?)/g); writeFileSync( INDEX_OF_STYLES, readFileSync(INDEX_OF_STYLES, 'utf-8').replace( versionRegExp, workspaceVersion as string ), 'utf-8' ); writeFileSync( INDEX_OF_STYLES_SOURCE, readFileSync(INDEX_OF_STYLES_SOURCE, 'utf-8').replace( versionRegExp, workspaceVersion as string ), 'utf-8' ); readdirSync(dist).forEach((path) => { readdirSync(join(dist, path)).forEach((pkg) => { try { const distPkgJson = JSON.parse( readFileSync(join(dist, path, pkg, 'package.json'), 'utf8') ); const rootPkgJson = JSON.parse( readFileSync(join(root, path, pkg, 'package.json'), 'utf8') ); rootPkgJson.version = distPkgJson.version; updateDependencyVersion( rootPkgJson, 'dependencies', distPkgJson.version ); updateDependencyVersion( rootPkgJson, 'devDependencies', distPkgJson.version ); writeFileSync( join(root, path, pkg, 'package.json'), format(rootPkgJson) ); console.log( `Синхронизирована версия ${rootPkgJson.version} в packages/${path}/${pkg}/package.json` ); } catch (e) { console.error(`Ошибка: ${e}`); } }); }); } function updateDependencyVersion(json: any, key: string, version: string) { if (!json[key]) return; Object.entries(json[key]).map(([depName]) => { if (depName.includes('@dpa')) { json[key][depName] = version; } }); }