diff --git a/.gitignore b/.gitignore index 26069b858d..b7d0ce01ab 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,8 @@ /tsd_typings/ npm-debug.log -/config/environment.common.json -/config/environment.prod.json -/config/environment.dev.json +/config/environment.dev.js +/config/environment.prod.js /coverage diff --git a/README.md b/README.md index 2fcfc9cdd6..80702dc46b 100644 --- a/README.md +++ b/README.md @@ -59,14 +59,11 @@ If you have [`nvm`](https://github.com/creationix/nvm#install-script) or [`nvm-w * `npm install` to install the local dependencies ## Configuring -Templates for environmental and shareable configuration files are located in `config/` folder in json format. +Default configuration file is located in `config/` folder. -To make the configuration: -* Create a new `environment.common.json` file in `config/` folder using `environment.common.default.json` as template; -* Create a new `environment.dev.json` file in `config/` folder using `environment.default.json` as template; -* Create a new `environment.prod.json` file in `config/` folder using `environment.default.json` as template; - -Note: JSON standard does not allow comments so you need to remove them whether you are copying from templates. +To change the default configuration values, create local files that override the parameters you need to change: +* Create a new `environment.dev.js` file in `config/` for `devel` environment; +* Create a new `environment.prod.js` file in `config/` for `production` environment; To use the configuration parameters in your component: ```bash @@ -168,45 +165,44 @@ See [the guide on the wiki](https://wiki.duraspace.org/display/DSPACE/DSpace+7+- ## File Structure ``` dspace-angular -├── README.md * This document -├── app.json * Application manifest file -├── config * Folder for configuration files -│   ├── environment.common.default.json * Template for general configuration file -│   └── environment.default.json * Template for the dev and prod configuration files -├── e2e * Folder for e2e test files -├── karma.conf.js * Unit Test configuration file -├── nodemon.json * Nodemon (https://nodemon.io/) configuration -├── package.json * This file describes the npm package for this project, its dependencies, scripts, etc. -├── postcss.config.json * PostCSS (http://postcss.org/) configuration file -├── protractor.conf.js * E2E tests configuration file -├── resources * Folder for static resources -│   ├── i18n * Folder for i18n translations -│   └── images * Folder for images -├── rollup-client.js * Rollup (http://rollupjs.org/) configuration for the client -├── rollup-server.js * Rollup (http://rollupjs.org/) configuration for the server -├── src * The source of the application -│   ├── app * The location of the app module, and root of the application shared by client and server -│   ├── backend * Folder containing a mock of the REST API, hosted by the express server -│   ├── browser.module.ts * The root module for the client -│   ├── client.aot.ts * The bootstrap file for the client, in production -│   ├── client.ts * The bootstrap file for the client, during development -│   ├── config.ts * File that loads environmental and shareable settings and makes them available to app components -│   ├── index-aot.html * The index.html file, for production -│   ├── index.html * The index.html file, for development -│   ├── node.module.ts * The root module for the server -│   ├── server.aot.ts * The express (http://expressjs.com/) config and bootstrap file for the server, in production -│   ├── server.routes.ts * The routes file for the server -│   ├── server.ts * The express (http://expressjs.com/) config and bootstrap file for the server, during development -│   ├── styles * Folder containing global styles. -│   │   ├── main.scss * Global scss file -│   │   └── variables.scss * Global sass variables file -│   └── typings.d.ts * File that allows you to add custom typings for libraries without TypeScript support -├── tsconfig.aot.json * TypeScript config for production builds -├── tsconfig.json * TypeScript config for development build -├── tslint.json * TSLint (https://palantir.github.io/tslint/) configuration -├── webpack.config.ts * Webpack (https://webpack.github.io/) config for development builds -├── webpack.test.config.ts * Webpack (https://webpack.github.io/) config for testing -└── webpack.prod.config.ts * Webpack (https://webpack.github.io/) config for production builds +├── README.md * This document +├── app.json * Application manifest file +├── config * Folder for configuration files +│   └── environment.default.js * Default configuration files +├── e2e * Folder for e2e test files +├── karma.conf.js * Unit Test configuration file +├── nodemon.json * Nodemon (https://nodemon.io/) configuration +├── package.json * This file describes the npm package for this project, its dependencies, scripts, etc. +├── postcss.config.json * PostCSS (http://postcss.org/) configuration file +├── protractor.conf.js * E2E tests configuration file +├── resources * Folder for static resources +│   ├── i18n * Folder for i18n translations +│   └── images * Folder for images +├── rollup-client.js * Rollup (http://rollupjs.org/) configuration for the client +├── rollup-server.js * Rollup (http://rollupjs.org/) configuration for the server +├── src * The source of the application +│   ├── app * The location of the app module, and root of the application shared by client and server +│   ├── backend * Folder containing a mock of the REST API, hosted by the express server +│   ├── browser.module.ts * The root module for the client +│   ├── client.aot.ts * The bootstrap file for the client, in production +│   ├── client.ts * The bootstrap file for the client, during development +│   ├── config.ts * File that loads environmental and shareable settings and makes them available to app components +│   ├── index-aot.html * The index.html file, for production +│   ├── index.html * The index.html file, for development +│   ├── node.module.ts * The root module for the server +│   ├── server.aot.ts * The express (http://expressjs.com/) config and bootstrap file for the server, in production +│   ├── server.routes.ts * The routes file for the server +│   ├── server.ts * The express (http://expressjs.com/) config and bootstrap file for the server, during development +│   ├── styles * Folder containing global styles. +│   │   ├── main.scss * Global scss file +│   │   └── variables.scss * Global sass variables file +│   └── typings.d.ts * File that allows you to add custom typings for libraries without TypeScript support +├── tsconfig.aot.json * TypeScript config for production builds +├── tsconfig.json * TypeScript config for development build +├── tslint.json * TSLint (https://palantir.github.io/tslint/) configuration +├── webpack.config.ts * Webpack (https://webpack.github.io/) config for development builds +├── webpack.test.config.ts * Webpack (https://webpack.github.io/) config for testing +└── webpack.prod.config.ts * Webpack (https://webpack.github.io/) config for production builds ``` ## 3rd Party Library Installation diff --git a/config/environment.common.default.json b/config/environment.common.default.json deleted file mode 100644 index 3d0d59c400..0000000000 --- a/config/environment.common.default.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "title": "" -} diff --git a/config/environment.default.js b/config/environment.default.js new file mode 100644 index 0000000000..17d6f5afdc --- /dev/null +++ b/config/environment.default.js @@ -0,0 +1,14 @@ +module.exports = { + "production": false, + // The REST API Location. + "rest": { + // NOTE: Space is capitalized because 'namespace' is a reserved string in TypeScript + "nameSpace": "/api", + "baseURL": "http://localhost:3000" + }, + // Path and Port in use for this Angular2 UI + "ui": { + "nameSpace": "/", + "baseURL": "http://localhost:3000" + } +} diff --git a/config/environment.default.json b/config/environment.default.json deleted file mode 100644 index acc05d5790..0000000000 --- a/config/environment.default.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "production": false, - // Location of REST API - "rest": { - // By default, we are currently using a local proxy running on port 5050. - // This is necessary because our actual REST API doesn't provide CORS headers yet! - // The actual REST API path is in the 'proxy' settings below. - // NOTE: Space is capitalized because 'namespace' is a reserved string in TypeScript - "nameSpace": "", - "baseURL": "" - }, - // REST Location that we are proxying (see src/proxy.ts) - // (Since we are using a proxy at this time, the actual REST API goes here) - "proxy": { - "nameSpace": "", - "baseURL": "" - // E.g. to use demo.dspace.org REST API, use the below values *instead* - //nameSpace: '/rest', - //baseURL: 'https://demo.dspace.org' - }, - // Path and Port in use for this Angular2 UI - "ui": { - "nameSpace": "", - "baseURL": "" - } -} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 530e47dce3..df07b35edc 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -59,7 +59,6 @@ export class AppComponent implements OnDestroy, OnInit { @HostListener('window:resize', ['$event']) private onResize(event): void { - console.log(GlobalConfig.rest.baseURL); this.store.dispatch( HostWindowActions.resize(event.target.innerWidth, event.target.innerHeight) ); diff --git a/src/config.ts b/src/config.ts index 9544ad0c2d..e4dc549265 100644 --- a/src/config.ts +++ b/src/config.ts @@ -2,33 +2,33 @@ const path = require('path'); -let configContext = require.context("../config", false, /json$/); +let configContext = require.context("../config", false, /js$/); let EnvConfig : any = {}; let EnvConfigFile : string; -let CommonConfig : any = {}; +let DefaultConfig : any = {}; try { - CommonConfig = configContext('./environment.common.json'); + DefaultConfig = configContext('./environment.default.js'); } catch (e) { - throw new Error(`Cannot find file "${path.resolve('config', './environment.common.json')}"`); + throw new Error(`Cannot find file "${path.resolve('config', './environment.default.js')}"`); } switch (process.env.NODE_ENV) { - case 'prod': - case 'production': - EnvConfigFile = './environment.prod.json'; - break; - case 'dev': - case 'development': - default: - EnvConfigFile = './environment.dev.json'; + case 'prod': + case 'production': + EnvConfigFile = './environment.prod.js'; + break; + case 'dev': + case 'development': + default: + EnvConfigFile = './environment.dev.js'; } try { - EnvConfig = configContext(EnvConfigFile); + EnvConfig = configContext(EnvConfigFile); } catch (e) { - throw new Error(`Cannot find file "${path.resolve('config', EnvConfigFile)}"`); + EnvConfig = {}; } -const GlobalConfig = Object.assign(CommonConfig, EnvConfig); +const GlobalConfig = Object.assign(DefaultConfig, EnvConfig); export {GlobalConfig}