/* eslint-disable no-console */ import path from 'path'; /** * Checks the versions of the Angular compiler packages between the `admin-ui` and `ui-devkit` packages. * These must match exactly since using different packages can introduce errors when compiling * with the ui-devkit. * See https://github.com/vendure-ecommerce/vendure/issues/758 for more on this issue. */ async function checkAngularVersions() { const adminUiPackageJson = require('../packages/admin-ui/package.json'); const uiDevkitPackageJson = require('../packages/ui-devkit/package.json'); const angularCompilerPackages = ['@angular/cli', '@angular/compiler-cli', '@angular/compiler']; const illegalSemverPrefixes = /^[~^]/; const errors: string[] = []; for (const pkg of angularCompilerPackages) { const uiVersion = adminUiPackageJson.devDependencies[pkg as keyof typeof adminUiPackageJson.devDependencies]; const devkitVersion = uiDevkitPackageJson.dependencies[pkg as keyof typeof uiDevkitPackageJson.dependencies]; // Removing this restriction to allow more flexibility in keeping angular versions // current for end-users, and also preventing issues in monorepos. // if (illegalSemverPrefixes.test(uiVersion)) { // errors.push(`Angular compiler versions must be exact, got "${uiVersion}" in admin-ui package`); // } // if (illegalSemverPrefixes.test(devkitVersion)) { // errors.push( // `Angular compiler versions must be exact, got "${devkitVersion}" in ui-devkit package`, // ); // } if (uiVersion !== devkitVersion) { errors.push( `Angular compiler package mismatch [${pkg}] admin-ui: "${uiVersion}", ui-devkit: "${devkitVersion}"`, ); } } if (errors.length) { for (const error of errors) { console.log(`ERROR: ${error}`); } process.exit(1); } else { console.log(`Angular compiler package check passed`); process.exit(0); } } checkAngularVersions();