igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
64 lines (55 loc) • 2.3 kB
text/typescript
import * as path from 'path';
import { Tree } from '@angular-devkit/schematics';
import { addPackageToPkgJson } from '../utils/dependency-handler';
import { JsonArray, workspaces } from '@angular-devkit/core';
import { ProjectType } from '../utils/util';
const resetPackage = { 'minireset.css': '~0.0.4' };
export const cssImport = 'node_modules/minireset.css/minireset.css';
export const scssImport =
`// CSS Reset, comment out if not required or using a different module\n`
+ `@import 'minireset.css/minireset';\n`;
export const addResetCss = (workspace: workspaces.WorkspaceDefinition, host: Tree): boolean => {
let status = false;
let addPackage;
const styleExts = ['scss', 'sass', 'css', 'less', 'styl'];
workspace.projects.forEach(project => {
const styleExt = styleExts.find(ext => host.exists(path.posix.join(project.sourceRoot, `styles.${ext}`)));
if (!styleExt) {
return;
}
const stylesFile = path.posix.join(project.sourceRoot, `styles.${styleExt}`);
switch (styleExt) {
case 'sass':
case 'scss':
let content = host.read(stylesFile).toString();
if (content.indexOf(`minireset.css/minireset`) === -1) {
content = scssImport + content;
host.overwrite(stylesFile, content);
addPackage = resetPackage;
}
break;
case 'css':
case 'less':
case 'styl':
const build = project.targets.get('build');
if (!build || project.extensions['projectType'] !== ProjectType.Application) {
return;
}
if (build.options.styles) {
build.options.styles =
[cssImport, ...build.options.styles as JsonArray];
} else {
build.options.styles = [cssImport];
}
addPackage = resetPackage;
break;
default:
break;
}
});
if (addPackage) {
const name = Object.keys(resetPackage)[0];
status = addPackageToPkgJson(host, name, resetPackage[name], 'dependencies');
}
return status;
};