nx/packages/schematics/src/utils/rules/update-karma-conf.ts
Thomas Burleson 04e99b06ae fix(schematics): ngrx schematics should generate enhanced ngrx files
@nrwl/schematics no longer uses the @ngrx/schematics to generate NgRx feature files.
*  `ngrx/files/__directory__` templates are used
*  Templates replicate the simple outputs generated from @ngrx/schematics:feature
*  Templates add significant Nx enhancements.

The following standard files will be scaffolded:
* `<feature>.actions.ts`
* `<feature>.effects.ts` + `<feature>.effects.spec.ts`
* `<feature>.reducer.ts` + `<feature>.reducer.spec.ts`

The following new files will also be scaffolded:
* `<feature>.selectors.ts` +  `<feature>.selectors.spec.ts`

Changes include:

* Change the action/enums to generate a trio of enums for each *feature*: `Load<Feature>`, `<Feature>Loaded`, and `<Feature>LoadError`
* Add code generators for `<feature>.selectors.ts`
* Add code generators for unit and integration testing `*.spec.ts` files
* Update the public barrel [`index.ts`] when adding ngrx to a library
* Use `StoreModule.forFeature()` when adding ngrx feature (without using the `--root` option)
* Use the Effect to respond tp `load<Feature>$` and dispatch `<Feature>Loaded` or `<Feature>LoadError`
* Update the Action to export `<feature>Actions` map of all action classes
* fix `ng-add.test.ts` tests for latest Angular CLI scaffolding
* fix `application.spec.ts` expect fails

Fixes #472,  Fixes #618,  Fixes #317,  Fixes #561, Refs #380.
2018-07-21 21:13:48 -04:00

41 lines
1.3 KiB
TypeScript

import { Rule, Tree, SchematicContext } from '@angular-devkit/schematics';
import { offsetFromRoot } from '../common';
import { createOrUpdate, getProjectConfig } from '../ast-utils';
/**
* This returns a Rule which changes the default Angular CLI Generated karma.conf.js
* @param options Object containing projectROot
*/
export function updateKarmaConf(options: { projectName: string }): Rule {
return (host: Tree, context: SchematicContext) => {
const project = getProjectConfig(host, options.projectName);
const projectRoot = project.root.replace(/\/$/, '');
const karmaPath = project.architect.test.options.karmaConfig;
createOrUpdate(
host,
karmaPath,
`// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
const { join } = require('path');
const getBaseKarmaConfig = require('${offsetFromRoot(projectRoot)}karma.conf');
module.exports = function(config) {
const baseConfig = getBaseKarmaConfig();
config.set({
...baseConfig,
coverageIstanbulReporter: {
...baseConfig.coverageIstanbulReporter,
dir: join(__dirname, '${offsetFromRoot(
projectRoot
)}coverage/${projectRoot}')
}
});
};
`
);
return host;
};
}