ember-codemod-remove-global-styles
Version:
Codemod to localize global styles
40 lines (39 loc) • 1.49 kB
JavaScript
import { readFileSync } from 'node:fs';
import { join } from 'node:path';
import { createFiles } from '@codemod-utils/files';
import { getModuleFilePath, printStyles } from '../../utils/css/index.js';
function getFile(filePath, options) {
const { projectRoot } = options;
try {
return readFileSync(join(projectRoot, filePath), 'utf8');
}
catch {
return '';
}
}
function logErrors(cssModuleFilePath, errors) {
if (errors.length === 0) {
return;
}
console.warn(`WARNING: ${cssModuleFilePath} may be incorrect.`);
console.warn(errors.map((error) => `- ${error}`).join('\n'));
console.log();
}
export function createStylesheets(project, options) {
const fileMap = new Map();
project.components.forEach((data, filePath) => {
const cssModuleFilePath = getModuleFilePath(filePath);
let cssModuleFile = getFile(cssModuleFilePath, options);
cssModuleFile += `${printStyles(data.localStyles)}\n`;
fileMap.set(cssModuleFilePath, cssModuleFile);
logErrors(cssModuleFilePath, data.errors);
});
project.routes.forEach((data, filePath) => {
const cssModuleFilePath = getModuleFilePath(filePath);
let cssModuleFile = getFile(cssModuleFilePath, options);
cssModuleFile += `${printStyles(data.localStyles)}\n`;
fileMap.set(cssModuleFilePath, cssModuleFile);
logErrors(cssModuleFilePath, data.errors);
});
createFiles(fileMap, options);
}