Skip to content

Commit b1eb567

Browse files
authored
fix(schematics): Missing deps, fixed ng add bug (#2952)
1 parent 72d3c2e commit b1eb567

File tree

9 files changed

+26
-66
lines changed

9 files changed

+26
-66
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
},
4444
"homepage": "https://github.com/angular/angularfire#readme",
4545
"dependencies": {
46-
"@angular-devkit/architect": "^0.1200.0",
46+
"@angular-devkit/architect": "> 0.1200.0 < 0.1300.0",
4747
"@angular-devkit/core": "^12.0.0",
4848
"@angular-devkit/schematics": "^12.0.0",
4949
"@angular/common": "^12.0.0",

src/package.json

+10-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
"@angular/core": "^12.0.0",
2828
"@angular/platform-browser": "^12.0.0",
2929
"@angular/platform-browser-dynamic": "^12.0.0",
30+
"@angular-devkit/schematics": "^12.0.0",
31+
"@angular-devkit/architect": "> 0.1200.0 < 0.1300.0",
32+
"@schematics/angular": "^12.0.0",
3033
"firebase": "^9.0.0",
3134
"rxfire": "^6.0.0",
3235
"rxjs": "~6.6.0"
@@ -39,7 +42,11 @@
3942
"jsonc-parser": "^3.0.0",
4043
"ora": "^5.3.0",
4144
"winston": "^3.0.0",
42-
"triple-beam": "^1.3.0"
45+
"triple-beam": "^1.3.0",
46+
"node-fetch": "^2.6.1",
47+
"semver": "^7.1.3",
48+
"inquirer": "^8.1.1",
49+
"fs-extra": "^8.0.1"
4350
},
4451
"ngPackage": {
4552
"lib": {
@@ -56,7 +63,8 @@
5663
"allowedNonPeerDependencies": [
5764
"fuzzy", "inquirer-autocomplete-prompt",
5865
"open", "jsonc-parser", "ora", "winston",
59-
"triple-beam"
66+
"triple-beam", "@schematics/angular", "node-fetch",
67+
"semver", "inquirer", "fs-extra"
6068
]
6169
},
6270
"ng-update": {

src/schematics/add/index.ts

+3-21
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,16 @@
1-
import { chain, Rule, SchematicContext, TaskId, Tree } from '@angular-devkit/schematics';
1+
import { SchematicContext, Tree } from '@angular-devkit/schematics';
22
import { DeployOptions } from '../interfaces';
33
import { addDependencies } from '../common';
44
import { peerDependencies } from '../versions.json';
55
import { NodePackageInstallTask, RunSchematicTask } from '@angular-devkit/schematics/tasks';
66

7-
const addFirebaseHostingDependencies = () => (tree: Tree, context: SchematicContext) => {
7+
export const ngAdd = (options: DeployOptions) => (tree: Tree, context: SchematicContext) => {
88
addDependencies(
99
tree,
1010
peerDependencies,
1111
context
1212
);
13-
return tree;
14-
};
15-
16-
let npmInstallTaskId: TaskId;
17-
18-
const npmInstall = () => (tree: Tree, context: SchematicContext) => {
19-
npmInstallTaskId = context.addTask(new NodePackageInstallTask());
20-
return tree;
21-
};
22-
23-
const runSetup = (options: DeployOptions) => (tree: Tree, context: SchematicContext) => {
13+
const npmInstallTaskId = context.addTask(new NodePackageInstallTask());
2414
context.addTask(new RunSchematicTask('ng-add-setup-project', options), [npmInstallTaskId]);
2515
return tree;
2616
};
27-
28-
export const ngAdd = (options: DeployOptions): Rule => {
29-
return chain([
30-
addFirebaseHostingDependencies(),
31-
npmInstall(),
32-
runSetup(options),
33-
]);
34-
};

src/schematics/common.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { SchematicsException, Tree, SchematicContext } from '@angular-devkit/schematics';
22
import { FirebaseHostingSite, FirebaseRc } from './interfaces';
33
import * as semver from 'semver';
4-
import { shortSiteName } from './utils';
4+
5+
export const shortSiteName = (site?: FirebaseHostingSite) => site?.name && site.name.split('/').pop();
56

67
export const stringifyFormatted = (obj: any) => JSON.stringify(obj, null, 2);
78

src/schematics/setup/prompts.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import * as fuzzy from 'fuzzy';
22
import * as inquirer from 'inquirer';
33
import { featureOptions, FEATURES, FirebaseApp, FirebaseHostingSite, FirebaseProject, PROJECT_TYPE, WorkspaceProject } from '../interfaces';
4-
import { hasPrerenderOption, isUniversalApp, shortAppId, shortSiteName } from '../utils';
4+
import { hasPrerenderOption, isUniversalApp, shortAppId } from '../utils';
55
import { getFirebaseTools } from '../firebaseTools';
6+
import { shortSiteName } from '../common';
67

78
inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt'));
89

src/schematics/setup/ssr.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
import { FirebaseJSON, Workspace, WorkspaceProject, NgAddNormalizedOptions, PROJECT_TYPE } from '../interfaces';
1010
import { firebaseFunctionsDependencies } from '../versions.json';
1111
import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
12-
import { shortSiteName } from '../utils';
12+
import { shortSiteName } from '../common';
1313

1414
function generateHostingConfig(project: string, dist: string, functionName: string, projectType: PROJECT_TYPE) {
1515
return {

src/schematics/setup/static.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import {
66
stringifyFormatted
77
} from '../common';
88
import { NgAddNormalizedOptions, FirebaseJSON, Workspace, WorkspaceProject } from '../interfaces';
9-
10-
import { shortSiteName } from '../utils';
9+
import { shortSiteName } from '../common';
1110

1211
function emptyFirebaseJson() {
1312
return {

src/schematics/utils.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { readFileSync } from 'fs';
2-
import { FirebaseRc, Workspace, WorkspaceProject, FirebaseApp, FirebaseHostingSite, DeployOptions, FEATURES } from './interfaces';
2+
import { FirebaseRc, Workspace, WorkspaceProject, FirebaseApp, DeployOptions, FEATURES } from './interfaces';
33
import { join } from 'path';
44
import { SchematicsException, Tree } from '@angular-devkit/schematics';
55
import ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript';
@@ -20,8 +20,6 @@ export const hasPrerenderOption = (
2020

2121
export const shortAppId = (app?: FirebaseApp) => app?.appId && app.appId.split('/').pop();
2222

23-
export const shortSiteName = (site?: FirebaseHostingSite) => site?.name && site.name.split('/').pop();
24-
2523
export function getWorkspace(
2624
host: Tree
2725
): { path: string; workspace: Workspace } {

yarn.lock

+5-34
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)