From d3b55c2c9ef246fc672762ef9395ae9c323dec20 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 04:50:01 -0400 Subject: [PATCH 1/8] Missing deps, fixed ng add bug --- package.json | 2 +- src/package.json | 12 ++++++++-- src/schematics/add/index.ts | 24 +++----------------- src/schematics/common.ts | 3 ++- src/schematics/setup/prompts.ts | 3 ++- src/schematics/setup/ssr.ts | 2 +- src/schematics/setup/static.ts | 3 +-- src/schematics/utils.ts | 4 +--- yarn.lock | 39 +++++---------------------------- 9 files changed, 26 insertions(+), 66 deletions(-) diff --git a/package.json b/package.json index cc23f3e65..a0cc673eb 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ }, "homepage": "https://github.com/angular/angularfire#readme", "dependencies": { - "@angular-devkit/architect": "^0.1200.0", + "@angular-devkit/architect": "> 0.1200.0 < 0.1300.0", "@angular-devkit/core": "^12.0.0", "@angular-devkit/schematics": "^12.0.0", "@angular/common": "^12.0.0", diff --git a/src/package.json b/src/package.json index 801bfdf7c..26c32a603 100644 --- a/src/package.json +++ b/src/package.json @@ -27,6 +27,9 @@ "@angular/core": "^12.0.0", "@angular/platform-browser": "^12.0.0", "@angular/platform-browser-dynamic": "^12.0.0", + "@angular-devkit/schematics": "^12.0.0", + "@angular-devkit/architect": "> 0.1200.0 < 0.1300.0", + "@schematics/angular": "^12.0.0", "firebase": "^9.0.0", "rxfire": "^6.0.0", "rxjs": "~6.6.0" @@ -39,7 +42,11 @@ "jsonc-parser": "^3.0.0", "ora": "^5.3.0", "winston": "^3.0.0", - "triple-beam": "^1.3.0" + "triple-beam": "^1.3.0", + "node-fetch": "^2.6.1", + "semver": "^7.1.3", + "inquirer": "^8.1.1", + "fs-extra": "^8.0.1" }, "ngPackage": { "lib": { @@ -56,7 +63,8 @@ "allowedNonPeerDependencies": [ "fuzzy", "inquirer-autocomplete-prompt", "open", "jsonc-parser", "ora", "winston", - "triple-beam" + "triple-beam", "@schematics/angular", "node-fetch", + "semver", "inquirer", "fs-extra" ] }, "ng-update": { diff --git a/src/schematics/add/index.ts b/src/schematics/add/index.ts index 8a9032181..39c90428a 100644 --- a/src/schematics/add/index.ts +++ b/src/schematics/add/index.ts @@ -1,34 +1,16 @@ -import { chain, Rule, SchematicContext, TaskId, Tree } from '@angular-devkit/schematics'; +import { SchematicContext, Tree } from '@angular-devkit/schematics'; import { DeployOptions } from '../interfaces'; import { addDependencies } from '../common'; import { peerDependencies } from '../versions.json'; import { NodePackageInstallTask, RunSchematicTask } from '@angular-devkit/schematics/tasks'; -const addFirebaseHostingDependencies = () => (tree: Tree, context: SchematicContext) => { +export const ngAdd = (options: DeployOptions) => (tree: Tree, context: SchematicContext) => { addDependencies( tree, peerDependencies, context ); - return tree; -}; - -let npmInstallTaskId: TaskId; - -const npmInstall = () => (tree: Tree, context: SchematicContext) => { - npmInstallTaskId = context.addTask(new NodePackageInstallTask()); - return tree; -}; - -const runSetup = (options: DeployOptions) => (tree: Tree, context: SchematicContext) => { + const npmInstallTaskId = context.addTask(new NodePackageInstallTask()); context.addTask(new RunSchematicTask('ng-add-setup-project', options), [npmInstallTaskId]); return tree; }; - -export const ngAdd = (options: DeployOptions): Rule => { - return chain([ - addFirebaseHostingDependencies(), - npmInstall(), - runSetup(options), - ]); -}; diff --git a/src/schematics/common.ts b/src/schematics/common.ts index c5d3f8eef..ed2879ea0 100644 --- a/src/schematics/common.ts +++ b/src/schematics/common.ts @@ -1,7 +1,8 @@ import { SchematicsException, Tree, SchematicContext } from '@angular-devkit/schematics'; import { FirebaseHostingSite, FirebaseRc } from './interfaces'; import * as semver from 'semver'; -import { shortSiteName } from './utils'; + +export const shortSiteName = (site?: FirebaseHostingSite) => site?.name && site.name.split('/').pop(); export const stringifyFormatted = (obj: any) => JSON.stringify(obj, null, 2); diff --git a/src/schematics/setup/prompts.ts b/src/schematics/setup/prompts.ts index b93e54623..8e993bc0d 100644 --- a/src/schematics/setup/prompts.ts +++ b/src/schematics/setup/prompts.ts @@ -1,8 +1,9 @@ import * as fuzzy from 'fuzzy'; import * as inquirer from 'inquirer'; import { featureOptions, FEATURES, FirebaseApp, FirebaseHostingSite, FirebaseProject, PROJECT_TYPE, WorkspaceProject } from '../interfaces'; -import { hasPrerenderOption, isUniversalApp, shortAppId, shortSiteName } from '../utils'; +import { hasPrerenderOption, isUniversalApp, shortAppId } from '../utils'; import { getFirebaseTools } from '../firebaseTools'; +import { shortSiteName } from '../common'; inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt')); diff --git a/src/schematics/setup/ssr.ts b/src/schematics/setup/ssr.ts index 7452463a6..a55b8a333 100644 --- a/src/schematics/setup/ssr.ts +++ b/src/schematics/setup/ssr.ts @@ -9,7 +9,7 @@ import { import { FirebaseJSON, Workspace, WorkspaceProject, NgAddNormalizedOptions, PROJECT_TYPE } from '../interfaces'; import { firebaseFunctionsDependencies } from '../versions.json'; import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; -import { shortSiteName } from '../utils'; +import { shortSiteName } from '../common'; function generateHostingConfig(project: string, dist: string, functionName: string, projectType: PROJECT_TYPE) { return { diff --git a/src/schematics/setup/static.ts b/src/schematics/setup/static.ts index dca13e944..a79b85452 100644 --- a/src/schematics/setup/static.ts +++ b/src/schematics/setup/static.ts @@ -6,8 +6,7 @@ import { stringifyFormatted } from '../common'; import { NgAddNormalizedOptions, FirebaseJSON, Workspace, WorkspaceProject } from '../interfaces'; - -import { shortSiteName } from '../utils'; +import { shortSiteName } from '../common'; function emptyFirebaseJson() { return { diff --git a/src/schematics/utils.ts b/src/schematics/utils.ts index 9228ee4b0..4e55c9c10 100644 --- a/src/schematics/utils.ts +++ b/src/schematics/utils.ts @@ -1,5 +1,5 @@ import { readFileSync } from 'fs'; -import { FirebaseRc, Workspace, WorkspaceProject, FirebaseApp, FirebaseHostingSite, DeployOptions, FEATURES } from './interfaces'; +import { FirebaseRc, Workspace, WorkspaceProject, FirebaseApp, DeployOptions, FEATURES } from './interfaces'; import { join } from 'path'; import { SchematicsException, Tree } from '@angular-devkit/schematics'; import ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript'; @@ -20,8 +20,6 @@ export const hasPrerenderOption = ( export const shortAppId = (app?: FirebaseApp) => app?.appId && app.appId.split('/').pop(); -export const shortSiteName = (site?: FirebaseHostingSite) => site?.name && site.name.split('/').pop(); - export function getWorkspace( host: Tree ): { path: string; workspace: Workspace } { diff --git a/yarn.lock b/yarn.lock index b729837f8..0188c638e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,12 +10,12 @@ "@angular-devkit/core" "12.1.3" rxjs "6.6.7" -"@angular-devkit/architect@^0.1200.0": - version "0.1200.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1200.5.tgz#db20520c1beff0c206197652c5c46a7755caa2a0" - integrity sha512-222VZ4OeaDK3vON8V5m+w15SRWfUs5uOb4H9ij/H9/6tyHD83uWfCDoOGg+ax4wJVdWEFJIS+Vn4ijGcZCq9WQ== +"@angular-devkit/architect@> 0.1200.0 < 0.1300.0": + version "0.1202.5" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1202.5.tgz#6e08b4b5d629a37479fb7aacda08e755541809ae" + integrity sha512-HiF8RceDrvP7m8Qm53KWVpekESX0UIK4/tOg9mgFMcS/2utRnPzuu4WbfrcY9DRrsoMWLXQs6j/UVXqf8PzXJw== dependencies: - "@angular-devkit/core" "12.0.5" + "@angular-devkit/core" "12.2.5" rxjs "6.6.7" "@angular-devkit/build-angular@^12.0.0": @@ -110,18 +110,6 @@ "@angular-devkit/architect" "0.1201.3" rxjs "6.6.7" -"@angular-devkit/core@12.0.5": - version "12.0.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.0.5.tgz#3d02abd97684434f6e1ffee470b7a9c63987ae51" - integrity sha512-zVSQV+8/vjUjsUKGlj8Kf5LioA6AXJTGI0yhHW9q1dFX4dPpbW63k0R1UoIB2wJ0F/AbYVgpnPGPe9BBm2fvZA== - dependencies: - ajv "8.2.0" - ajv-formats "2.0.2" - fast-json-stable-stringify "2.1.0" - magic-string "0.25.7" - rxjs "6.6.7" - source-map "0.7.3" - "@angular-devkit/core@12.1.3", "@angular-devkit/core@^12.0.0": version "12.1.3" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.1.3.tgz#a147bbda25442c8fa389dc7490b8c9578451e0ab" @@ -2906,13 +2894,6 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-formats@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.0.2.tgz#69875cb99d76c74be46e9c7a4444bc232354eba0" - integrity sha512-Brah4Uo5/U8v76c6euTwtjVFFaVishwnJrQBYpev1JRh4vjA1F4HY3UzQez41YUCszUCXKagG8v6eVRBHV1gkw== - dependencies: - ajv "^8.0.0" - ajv-formats@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.0.tgz#96eaf83e38d32108b66d82a9cb0cfa24886cdfeb" @@ -2935,16 +2916,6 @@ ajv@6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" - integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ajv@8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" From 6ed3e822d207fa584ec805e5de942432f35fa465 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 05:30:16 -0400 Subject: [PATCH 2/8] findModuleFromOptions wasn't working for me --- src/schematics/utils.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/schematics/utils.ts b/src/schematics/utils.ts index 4e55c9c10..7e6d055f4 100644 --- a/src/schematics/utils.ts +++ b/src/schematics/utils.ts @@ -5,7 +5,7 @@ import { SchematicsException, Tree } from '@angular-devkit/schematics'; import ts from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript'; import { findNode, addImportToModule, insertImport } from '@schematics/angular/utility/ast-utils'; import { InsertChange, ReplaceChange, applyToUpdateRecorder, Change } from '@schematics/angular/utility/change'; -import { findModuleFromOptions, buildRelativePath } from '@schematics/angular/utility/find-module'; +import { buildRelativePath } from '@schematics/angular/utility/find-module'; import { overwriteIfExists } from './common'; // We consider a project to be a universal project if it has a `server` architect @@ -153,10 +153,8 @@ export function addEnvironmentEntry( export function addToNgModule(host: Tree, options: { sourcePath: string, features: FEATURES[]}) { - const modulePath = findModuleFromOptions(host, { - name: 'app', - path: options.sourcePath, - }); + const modulePath = `/${options.sourcePath}/app/app.module.ts`; + console.log(modulePath); if (!modulePath) { return host; From 83808a7df7b6f3beaa76e482b910adb4b067f8fb Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 05:40:15 -0400 Subject: [PATCH 3/8] Add note on logged in user --- src/schematics/deploy/actions.ts | 2 ++ src/schematics/interfaces.ts | 4 +++- src/schematics/setup/index.ts | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/schematics/deploy/actions.ts b/src/schematics/deploy/actions.ts index b28111199..31294da46 100644 --- a/src/schematics/deploy/actions.ts +++ b/src/schematics/deploy/actions.ts @@ -367,6 +367,8 @@ export default async function deploy( ) { if (!firebaseToken) { await firebaseTools.login(); + const users = await firebaseTools.login.list(); + console.log(`Logged into Firebase as ${users.map(it => it.user.email).join(', ')}.`); } if (prerenderBuildTarget) { diff --git a/src/schematics/interfaces.ts b/src/schematics/interfaces.ts index 22012e6a7..9ec5014b3 100644 --- a/src/schematics/interfaces.ts +++ b/src/schematics/interfaces.ts @@ -118,7 +118,9 @@ export interface FirebaseTools { version(): string; }; - login(): Promise; + login: { + list(): Promise<{user: Record}[]>; + } & (() => Promise); deploy(config: FirebaseDeployConfig): Promise; diff --git a/src/schematics/setup/index.ts b/src/schematics/setup/index.ts index 92b0852b2..06b7ca2ad 100644 --- a/src/schematics/setup/index.ts +++ b/src/schematics/setup/index.ts @@ -112,6 +112,8 @@ export const ngAddSetupProject = ( const firebaseTools = await getFirebaseTools(); await firebaseTools.login(); + const users = await firebaseTools.login.list(); + console.log(`Logged into Firebase as ${users.map(it => it.user.email).join(', ')}.`); const { project: ngProject, projectName: ngProjectName } = getProject(options, host); From b82af64fd69edcc04059fb3e7651743d9b278c4c Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 05:41:38 -0400 Subject: [PATCH 4/8] Ditch the console.log --- src/schematics/utils.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/schematics/utils.ts b/src/schematics/utils.ts index 7e6d055f4..783c55bbe 100644 --- a/src/schematics/utils.ts +++ b/src/schematics/utils.ts @@ -154,7 +154,6 @@ export function addEnvironmentEntry( export function addToNgModule(host: Tree, options: { sourcePath: string, features: FEATURES[]}) { const modulePath = `/${options.sourcePath}/app/app.module.ts`; - console.log(modulePath); if (!modulePath) { return host; From f68e7994120fb6fe4a8c524c7dbd082c915d815a Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 05:48:13 -0400 Subject: [PATCH 5/8] Fix the spec --- src/schematics/deploy/actions.jasmine.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/schematics/deploy/actions.jasmine.ts b/src/schematics/deploy/actions.jasmine.ts index fc4d8146e..c228d58c3 100644 --- a/src/schematics/deploy/actions.jasmine.ts +++ b/src/schematics/deploy/actions.jasmine.ts @@ -21,6 +21,9 @@ const SERVER_BUILD_TARGET: BuildTarget = { name: `${PROJECT}:server:production` }; +const login = () => Promise.resolve(); +login.list = () => Promise.resolve([{ user: { email: 'foo@bar.baz' }}]); + const initMocks = () => { fsHost = { moveSync(_: string, __: string) { @@ -36,7 +39,7 @@ const initMocks = () => { }; firebaseMock = { - login: () => Promise.resolve(), + login, projects: { list: () => Promise.resolve([]), create: () => Promise.reject(), From a7b01776f71fec13c308c3264a507fb9c3fa9de2 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 06:11:15 -0400 Subject: [PATCH 6/8] Apply fixes to server.ts --- src/schematics/setup/index.ts | 6 +++- src/schematics/utils.ts | 52 +++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/schematics/setup/index.ts b/src/schematics/setup/index.ts index 06b7ca2ad..4b3c5c6c9 100644 --- a/src/schematics/setup/index.ts +++ b/src/schematics/setup/index.ts @@ -1,5 +1,8 @@ import { SchematicContext, SchematicsException, Tree } from '@angular-devkit/schematics'; -import { getWorkspace, getProject, getFirebaseProjectNameFromHost, addEnvironmentEntry, addToNgModule, addIgnoreFiles } from '../utils'; +import { + getWorkspace, getProject, getFirebaseProjectNameFromHost, addEnvironmentEntry, + addToNgModule, addIgnoreFiles, addFixesToServer +} from '../utils'; import { projectTypePrompt, appPrompt, sitePrompt, projectPrompt, featuresPrompt } from './prompts'; import { setupUniversalDeployment } from './ssr'; import { setupStaticDeployment } from './static'; @@ -34,6 +37,7 @@ export const setupProject = const featuresToImport = features.filter(it => it !== FEATURES.Hosting); if (featuresToImport.length > 0) { addToNgModule(tree, { features: featuresToImport, sourcePath }); + addFixesToServer(tree, { features: featuresToImport, sourcePath }); } if (config.sdkConfig) { diff --git a/src/schematics/utils.ts b/src/schematics/utils.ts index 783c55bbe..941010687 100644 --- a/src/schematics/utils.ts +++ b/src/schematics/utils.ts @@ -151,14 +151,60 @@ export function addEnvironmentEntry( return host; } -export function addToNgModule(host: Tree, options: { sourcePath: string, features: FEATURES[]}) { - const modulePath = `/${options.sourcePath}/app/app.module.ts`; +export function addFixesToServer(host: Tree, options: { sourcePath: string, features: FEATURES[]}) { + const serverPath = `/server.ts`; - if (!modulePath) { + if (!host.exists(serverPath)) { return host; } + const text = host.read(serverPath); + if (text === null) { + throw new SchematicsException(`File ${serverPath} does not exist.`); + } + const sourceText = text.toString('utf-8'); + + const source = ts.createSourceFile( + serverPath, + sourceText, + ts.ScriptTarget.Latest, + true + ); + + const changes: Array = []; + + changes.push( + insertImport(source, serverPath, undefined as any, 'zone.js/dist/zone-patch-rxjs'), + ); + + if (options.features.includes(FEATURES.Firestore)) { + changes.push( + insertImport(source, serverPath, undefined as any, '@angular/fire/firestore-protos'), + ); + } + + const recorder = host.beginUpdate(serverPath); + applyToUpdateRecorder(recorder, changes); + host.commitUpdate(recorder); + + // TODO add a side-effect import rather than go back and edit + + const text2 = host.read(serverPath); + if (text2 === null) { + throw new SchematicsException(`File ${serverPath} does not exist.`); + } + const sourceText2 = text.toString('utf-8'); + + overwriteIfExists(host, serverPath, sourceText2.replace(/^import \{ undefined \} from /g, 'import ')); + + return host; +} + +export function addToNgModule(host: Tree, options: { sourcePath: string, features: FEATURES[]}) { + + const modulePath = `/${options.sourcePath}/app/app.module.ts`; + if (!host.exists(modulePath)) { throw new Error(`Specified module path ${modulePath} does not exist`); } From da48efbbb789466f4778ea857ca577e912f13bd9 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 06:22:32 -0400 Subject: [PATCH 7/8] Apply fixes to server.ts --- src/schematics/utils.ts | 42 +++++++++-------------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/src/schematics/utils.ts b/src/schematics/utils.ts index 941010687..8b29fce0f 100644 --- a/src/schematics/utils.ts +++ b/src/schematics/utils.ts @@ -151,7 +151,7 @@ export function addEnvironmentEntry( return host; } - +// TODO rewrite using typescript export function addFixesToServer(host: Tree, options: { sourcePath: string, features: FEATURES[]}) { const serverPath = `/server.ts`; @@ -164,40 +164,16 @@ export function addFixesToServer(host: Tree, options: { sourcePath: string, feat throw new SchematicsException(`File ${serverPath} does not exist.`); } const sourceText = text.toString('utf-8'); - - const source = ts.createSourceFile( - serverPath, - sourceText, - ts.ScriptTarget.Latest, - true - ); - - const changes: Array = []; - - changes.push( - insertImport(source, serverPath, undefined as any, 'zone.js/dist/zone-patch-rxjs'), - ); - - if (options.features.includes(FEATURES.Firestore)) { - changes.push( - insertImport(source, serverPath, undefined as any, '@angular/fire/firestore-protos'), - ); + const addZonePatch = !sourceText.includes('import \'zone.js/dist/zone-patch-rxjs\';'); + const addFirestorePatch = options.features.includes(FEATURES.Firestore) && + !sourceText.includes('import \'@angular/fire/firestore-protos\';'); + + if (addZonePatch || addFirestorePatch) { + overwriteIfExists(host, serverPath, sourceText.replace('import \'zone.js/dist/zone-node\';', `import 'zone.js/dist/zone-node'; +${addZonePatch ? 'import \'zone.js/dist/zone-patch-rxjs\';' : ''} +${addFirestorePatch ? 'import \'@angular/fire/firestore-protos\';' : ''}`)); } - const recorder = host.beginUpdate(serverPath); - applyToUpdateRecorder(recorder, changes); - host.commitUpdate(recorder); - - // TODO add a side-effect import rather than go back and edit - - const text2 = host.read(serverPath); - if (text2 === null) { - throw new SchematicsException(`File ${serverPath} does not exist.`); - } - const sourceText2 = text.toString('utf-8'); - - overwriteIfExists(host, serverPath, sourceText2.replace(/^import \{ undefined \} from /g, 'import ')); - return host; } From 27cc2ea7f4556b735625e6735d6244b66e0fb801 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 14 Sep 2021 06:42:25 -0400 Subject: [PATCH 8/8] File-loader, functions deps --- src/package.json | 5 +++-- src/schematics/setup/ssr.ts | 6 +++++- src/schematics/versions.json | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/package.json b/src/package.json index 26c32a603..0da32eeb0 100644 --- a/src/package.json +++ b/src/package.json @@ -46,7 +46,8 @@ "node-fetch": "^2.6.1", "semver": "^7.1.3", "inquirer": "^8.1.1", - "fs-extra": "^8.0.1" + "fs-extra": "^8.0.1", + "file-loader": "^6.2.0" }, "ngPackage": { "lib": { @@ -64,7 +65,7 @@ "fuzzy", "inquirer-autocomplete-prompt", "open", "jsonc-parser", "ora", "winston", "triple-beam", "@schematics/angular", "node-fetch", - "semver", "inquirer", "fs-extra" + "semver", "inquirer", "fs-extra", "file-loader" ] }, "ng-update": { diff --git a/src/schematics/setup/ssr.ts b/src/schematics/setup/ssr.ts index a55b8a333..9ac840988 100644 --- a/src/schematics/setup/ssr.ts +++ b/src/schematics/setup/ssr.ts @@ -131,7 +131,11 @@ export const setupUniversalDeployment = (config: { addDependencies( tree, - firebaseFunctionsDependencies, + Object.entries(firebaseFunctionsDependencies).reduce((acc, [dep, deets]) => { + deets.dev = true; + acc[dep] = deets; + return acc; + }, {}), config.context ); diff --git a/src/schematics/versions.json b/src/schematics/versions.json index 33465856c..9b5061944 100644 --- a/src/schematics/versions.json +++ b/src/schematics/versions.json @@ -4,7 +4,7 @@ "rxfire": { "dev": false, "version": "0.0.0" } }, "firebaseFunctionsDependencies": { - "firebase-admin": { "dev": true, "version": "0.0.0" }, - "firebase-functions": { "dev": true, "version": "0.0.0" } + "firebase-admin": { "dev": false, "version": "0.0.0" }, + "firebase-functions": { "dev": false, "version": "0.0.0" } } }