diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8a89b85..52a891b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,10 @@ before_script: - yarn cache: + key: + files: + - package.json + - yarn.lock paths: - node_modules @@ -28,7 +32,7 @@ pages: - cp public/index.html public/404.html artifacts: paths: - - dist/public + - public only: - master - pages diff --git a/angular.json b/angular.json index 4247459..b535add 100644 --- a/angular.json +++ b/angular.json @@ -47,12 +47,70 @@ ], "optimization": true, "outputHashing": "all", - "sourceMap": false, + "sourceMap": true, "extractCss": true, - "namedChunks": false, + "namedChunks": true, "aot": true, "extractLicenses": true, - "vendorChunk": false, + "vendorChunk": true, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + }, + "gitlab": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.gitlab.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": true, + "extractCss": true, + "namedChunks": true, + "aot": true, + "extractLicenses": true, + "vendorChunk": true, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + }, + "ipfs": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.ipfs.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": true, + "extractCss": true, + "namedChunks": true, + "aot": true, + "extractLicenses": true, + "vendorChunk": true, "buildOptimizer": true, "budgets": [ { diff --git a/package.json b/package.json index 5b17ee3..2feea65 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,10 @@ "scripts": { "ng": "ng", "start": "ng serve --ssl", - "build": "ng build", - "build:prod": "ng build --prod", - "build:gitlab": "ng build --prod --base-href /public-gateway-cacher/", + "build": "ng build --base-href /", + "build:prod": "ng build --configuration=production --base-href /", + "build:gitlab": "ng build --configuration=gitlab --base-href /public-gateway-cacher/", + "build:ipfs": "ng build --configuration=ipfs", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 33ec000..aaf3979 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { environment } from '../environments/environment'; const routes: Routes = [{ path: '', @@ -7,7 +8,7 @@ const routes: Routes = [{ }]; @NgModule({ - imports: [RouterModule.forRoot(routes, { useHash: true })], + imports: [RouterModule.forRoot(routes, { useHash: environment.useHash })], exports: [RouterModule] }) export class AppRoutingModule { } diff --git a/src/app/interfaces/environment.ts b/src/app/interfaces/environment.ts new file mode 100644 index 0000000..f5b42a2 --- /dev/null +++ b/src/app/interfaces/environment.ts @@ -0,0 +1,5 @@ +export interface Environment { + production: boolean; + base_href?: string; + useHash: boolean; +} diff --git a/src/app/pages/pages.component.html b/src/app/pages/pages.component.html index 7057c1a..4e7fb63 100644 --- a/src/app/pages/pages.component.html +++ b/src/app/pages/pages.component.html @@ -3,7 +3,7 @@

Public IPFS Cacher

-
+ @@ -12,12 +12,12 @@ - +
-
+ @@ -26,7 +26,7 @@ - +
diff --git a/src/app/services/gateway.service.ts b/src/app/services/gateway.service.ts index 0bff4fe..6437cb7 100644 --- a/src/app/services/gateway.service.ts +++ b/src/app/services/gateway.service.ts @@ -1,6 +1,7 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; +import { environment } from '../../environments/environment'; @Injectable({ providedIn: 'root' @@ -12,7 +13,11 @@ export class GatewayService { ) { } list(): Observable { - return this.http.get('/assets/json/gateways.json'); + return this.http.get( + environment.base_href && environment.base_href !== '/' + ? `${environment.base_href}/assets/json/gateways.json` + : '/assets/json/gateways.json' + ); } get(gateway: string, type: string, hash: string): Observable { diff --git a/src/environments/environment.gitlab.ts b/src/environments/environment.gitlab.ts new file mode 100644 index 0000000..d43ab83 --- /dev/null +++ b/src/environments/environment.gitlab.ts @@ -0,0 +1,7 @@ +import { Environment } from '../app/interfaces/environment'; + +export const environment: Environment = { + production: true, + base_href: '/public-gateway-cacher', + useHash: false, +}; diff --git a/src/environments/environment.ipfs.ts b/src/environments/environment.ipfs.ts new file mode 100644 index 0000000..aa5bbea --- /dev/null +++ b/src/environments/environment.ipfs.ts @@ -0,0 +1,6 @@ +import { Environment } from '../app/interfaces/environment'; + +export const environment: Environment = { + production: true, + useHash: true, +}; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3612073..237438d 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,3 +1,7 @@ -export const environment = { - production: true +import { Environment } from '../app/interfaces/environment'; + +export const environment: Environment = { + production: true, + base_href: '/', + useHash: false, }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 7b4f817..f216fef 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -1,9 +1,13 @@ +import { Environment } from '../app/interfaces/environment'; + // This file can be replaced during build by using the `fileReplacements` array. // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. // The list of file replacements can be found in `angular.json`. -export const environment = { - production: false +export const environment: Environment = { + production: false, + base_href: '/', + useHash: false, }; /*