UNPKG

ember-codemod-v1-to-v2

Version:

Codemod to convert Ember addons to v2 addon format

45 lines (44 loc) 1.62 kB
import { getPackageType, readPackageJson, validatePackageJson, } from '@codemod-utils/package-json'; function analyzePackageJson(codemodOptions) { const { projectRoot } = codemodOptions; const packageJson = readPackageJson({ projectRoot }); validatePackageJson(packageJson); const { dependencies, devDependencies, name, version } = packageJson; const projectDependencies = new Map([ ...Object.entries(dependencies ?? {}), ...Object.entries(devDependencies ?? {}), ]); return { dependencies: projectDependencies, hasGlint: projectDependencies.has('@glint/core') || projectDependencies.has('@glint/ember-tsc'), hasTypeScript: projectDependencies.has('typescript'), isV1Addon: getPackageType(packageJson) === 'v1-addon', name, version, }; } function deriveAddonLocation(addonPackage) { const hasScope = addonPackage.name.includes('/'); if (!hasScope) { return addonPackage.name; } const packageName = addonPackage.name.split('/')[1]; return packageName; } export function createOptions(codemodOptions) { const addonPackage = analyzePackageJson(codemodOptions); return { locations: { addon: codemodOptions.addonLocation ?? deriveAddonLocation(addonPackage), testApp: codemodOptions.testAppLocation ?? 'test-app', }, packages: { addon: addonPackage, testApp: { name: codemodOptions.testAppName ?? 'test-app', }, }, projectRoot: codemodOptions.projectRoot, }; }