Skip to content

Commit 5ab4f64

Browse files
committed
Ditch hardcoded paths in build and fix up ng-add package.json stuff
1 parent 06f171b commit 5ab4f64

File tree

5 files changed

+49
-35
lines changed

5 files changed

+49
-35
lines changed

src/schematics/ng-add.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { from } from 'rxjs';
66
import { map, switchMap } from 'rxjs/operators';
77
import { Project } from './interfaces';
88
import { listProjects, projectPrompt } from './utils';
9-
import { dependencies as requiredDependencyVersions, devDependencies as requiredDevDependencyVersions } from './versions';
9+
import requiredDependencies from './versions.json';
1010

1111
const stringifyFormatted = (obj: any) => JSON.stringify(obj, null, 2);
1212

@@ -170,12 +170,10 @@ export const ngAdd = (options: DeployOptions) => (host: Tree, context: Schematic
170170
throw new SchematicsException('Could not locate package.json');
171171
}
172172

173-
Object.keys(requiredDependencyVersions).forEach(name => {
174-
packageJson.dependencies[name] = packageJson.dependencies[name] || requiredDependencyVersions[name];
175-
});
176-
177-
Object.keys(requiredDevDependencyVersions).forEach(name => {
178-
packageJson.devDependencies[name] = packageJson.devDependencies[name] || requiredDevDependencyVersions[name];
173+
Object.keys(requiredDependencies).forEach(name => {
174+
const dev: Boolean|undefined = requiredDependencies[name].dev;
175+
const dependencies = dev ? packageJson.devDependencies : packageJson.dependencies
176+
dependencies[name] = dependencies[name] || requiredDependencies[name].version;
179177
});
180178

181179
overwriteIfExists(host, 'package.json', stringifyFormatted(packageJson));

src/schematics/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"declaration": false,
77
"removeComments": true,
88
"strictNullChecks": true,
9+
"resolveJsonModule": true,
910
"lib": [
1011
"es2015",
1112
"dom",

src/schematics/versions.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"default": {
3+
"firebase": { "version": "0.0.0" },
4+
"@angular-devkit/architect": { "dev": true, "version": "0.0.0" },
5+
"firebase-tools": { "dev": true, "version": "0.0.0" },
6+
"fuzzy": { "dev": true, "version": "0.0.0"},
7+
"inquirer": { "dev": true, "version": "0.0.0"},
8+
"inquirer-autocomplete-prompt": { "dev": true, "version": "0.0.0"}
9+
}
10+
}

src/schematics/versions.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

tools/build.ts

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,15 @@ import { spawn } from 'child_process';
22
import { copy, writeFile, readFile } from 'fs-extra';
33
import { prettySize } from 'pretty-size';
44
import { sync as gzipSync } from 'gzip-size';
5+
import { join } from 'path';
56

6-
const rootPackage = import(`${process.cwd()}/package.json`);
7+
const src = (...args:string[]) => join(process.cwd(), 'src', ...args);
8+
const dest = (...args:string[]) => join(process.cwd(), 'dist', 'packages-dist', ...args);
79

8-
async function replaceVersions(path: string) {
10+
const rootPackage = import(join(process.cwd(), 'package.json'));
11+
12+
async function replacePackageJsonVersions() {
13+
const path = dest('package.json');
914
const root = await rootPackage;
1015
var pkg = await import(path);
1116
Object.keys(pkg.peerDependencies).forEach(peer => {
@@ -15,22 +20,33 @@ async function replaceVersions(path: string) {
1520
return writeFile(path, JSON.stringify(pkg, null, 2));
1621
}
1722

23+
async function replaceSchematicVersions() {
24+
const root = await rootPackage;
25+
const path = dest('schematics', 'versions.json');
26+
const dependencies = await import(path);
27+
Object.keys(dependencies.default).forEach(name => {
28+
dependencies.default[name].version = root.dependencies[name] || root.devDependencies[name];
29+
});
30+
return writeFile(path, JSON.stringify(dependencies, null, 2));
31+
}
32+
1833
function spawnPromise(command: string, args: string[]) {
1934
return new Promise(resolve => spawn(command, args, {stdio: 'inherit'}).on('close', resolve));
2035
}
2136

2237
async function compileSchematics() {
23-
await spawnPromise(`${process.cwd()}/node_modules/.bin/tsc`, ['-p', `${process.cwd()}/src/schematics/tsconfig.json`]);
38+
await spawnPromise(`npx`, ['tsc', '-p', src('schematics', 'tsconfig.json')]);
2439
return Promise.all([
25-
copy(`${process.cwd()}/src/core/builders.json`, `${process.cwd()}/dist/packages-dist/builders.json`),
26-
copy(`${process.cwd()}/src/core/collection.json`, `${process.cwd()}/dist/packages-dist/collection.json`),
27-
copy(`${process.cwd()}/src/schematics/deploy/schema.json`, `${process.cwd()}/dist/packages-dist/schematics/deploy/schema.json`)
40+
copy(src('core', 'builders.json'), dest('builders.json')),
41+
copy(src('core', 'collection.json'), dest('collection.json')),
42+
copy(src('schematics', 'deploy', 'schema.json'), dest('deploy', 'schema.json')),
43+
replaceSchematicVersions()
2844
]);
2945
}
3046

3147
async function replaceDynamicImportsForUMD() {
32-
const perfPath = `${process.cwd()}/dist/packages-dist/bundles/angular-fire-performance.umd.js`;
33-
const messagingPath = `${process.cwd()}/dist/packages-dist/bundles/angular-fire-messaging.umd.js`;
48+
const perfPath = dest('bundles', 'angular-fire-performance.umd.js');
49+
const messagingPath = dest('bundles', 'angular-fire-messaging.umd.js');
3450
const [perf, messaging] = await Promise.all([
3551
readFile(perfPath, 'utf8'),
3652
readFile(messagingPath, 'utf8')
@@ -42,22 +58,22 @@ async function replaceDynamicImportsForUMD() {
4258
}
4359

4460
async function measure(module: string) {
45-
const path = `${process.cwd()}/dist/packages-dist/bundles/${module}.umd.js`;
61+
const path = dest('bundles', `${module}.umd.js`);
4662
const file = await readFile(path);
4763
const gzip = prettySize(gzipSync(file), true);
4864
const size = prettySize(file.byteLength, true);
4965
return { size, gzip };
5066
}
5167

5268
async function buildLibrary() {
53-
await spawnPromise(`${process.cwd()}/node_modules/.bin/ng`, ['build']);
69+
await spawnPromise('npx', ['ng', 'build']);
5470
await Promise.all([
55-
copy(`${process.cwd()}/.npmignore`, `${process.cwd()}/dist/packages-dist/.npmignore`),
56-
copy(`${process.cwd()}/README.md`, `${process.cwd()}/dist/packages-dist/README.md`),
57-
copy(`${process.cwd()}/docs`, `${process.cwd()}/dist/packages-dist/docs`),
58-
copy(`${process.cwd()}/src/firebase-node`, `${process.cwd()}/dist/packages-dist/firebase-node`),
71+
copy(join(process.cwd(), '.npmignore'), dest('.npmignore')),
72+
copy(join(process.cwd(), 'README.md'), dest('README.md')),
73+
copy(join(process.cwd(), 'docs'), dest('docs')),
74+
copy(src('firebase-node'), dest('firebase-node')),
5975
compileSchematics(),
60-
replaceVersions(`${process.cwd()}/dist/packages-dist/package.json`),
76+
replacePackageJsonVersions(),
6177
replaceDynamicImportsForUMD()
6278
]);
6379
return Promise.all([
@@ -74,9 +90,9 @@ async function buildLibrary() {
7490
}
7591

7692
async function buildWrapper() {
77-
await copy(`${process.cwd()}/src/wrapper`, `${process.cwd()}/dist/wrapper-dist`);
93+
await copy(src('wrapper'), join(process.cwd(), 'dist', 'wrapper-dist'));
7894
const root = await rootPackage;
79-
const path = `${process.cwd()}/dist/wrapper-dist/package.json`;
95+
const path = join(process.cwd(), 'dist', 'wrapper-dist', 'package.json');
8096
var pkg = await import(path);
8197
pkg.dependencies['@angular/fire'] = pkg.version = root.version;
8298
return writeFile(path, JSON.stringify(pkg, null, 2));

0 commit comments

Comments
 (0)