@yolkai/nx-schematics
Version:
127 lines (124 loc) • 3.68 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const nx_workspace_1 = require("@yolkai/nx-workspace");
const fs_1 = require("fs");
const nx_workspace_2 = require("@yolkai/nx-workspace");
const path = require("path");
exports.default = {
description: 'Create tsconfig.app.json for every app',
run: () => {
const config = nx_workspace_1.readWorkspaceConfigPath();
config.apps.forEach(app => {
if (!app.root.startsWith('apps/'))
return;
const offset = nx_workspace_2.offsetFromRoot(app.root);
fs_1.writeFileSync(`${app.root}/tsconfig.app.json`, `{
"extends": "${offset}tsconfig.json",
"compilerOptions": {
"outDir": "${offset}dist/out-tsc/apps/${app.name}",
"module": "es2015"
},
"include": [
"**/*.ts"
/* add all lazy-loaded libraries here: "${offset}libs/my-lib/index.ts" */
],
"exclude": [
"**/*.spec.ts"
]
}`);
fs_1.writeFileSync(`${path.dirname(app.root)}/e2e/tsconfig.e2e.json`, `{
"extends": "${offset}tsconfig.json",
"compilerOptions": {
"outDir": "${offset}dist/out-tsc/e2e/${app.name}",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"jasminewd2",
"node"
]
},
"include": [
"../**/*.ts"
/* add all lazy-loaded libraries here: "${offset}libs/my-lib/index.ts" */
],
"exclude": [
"**/*.spec.ts"
]
}`);
});
fs_1.writeFileSync('protractor.conf.js', `
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
const { SpecReporter } = require('jasmine-spec-reporter');
const { getAppDirectoryUsingCliConfig } = require('@yolkai/nx-schematics/src/utils/cli-config-utils');
const appDir = getAppDirectoryUsingCliConfig();
exports.config = {
allScriptsTimeout: 11000,
specs: [
appDir + '/e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: appDir + '/e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};`);
fs_1.writeFileSync(`tsconfig.spec.json`, `{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./dist/out-tsc/spec",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"node"
]
},
"include": [
"**/*.ts"
],
"exclude": [
"node_modules",
"tmp"
]
}`);
fs_1.unlinkSync('tsconfig.app.json');
fs_1.unlinkSync('tsconfig.e2e.json');
nx_workspace_1.updateJsonFile('.angular-cli.json', json => {
json.apps.forEach(app => {
app['tsconfig'] = 'tsconfig.app.json';
});
json.lint = [
{
project: './tsconfig.spec.json',
exclude: '**/node_modules/**'
}
];
json.apps.forEach(app => {
if (!app.root.startsWith('apps/'))
return;
json.lint.push({
project: `./${app.root}/tsconfig.app.json`,
exclude: '**/node_modules/**'
});
json.lint.push({
project: `./apps/${app.name}/e2e/tsconfig.e2e.json`,
exclude: '**/node_modules/**'
});
});
});
}
};