Search.Maven.Org
Table of Contents
Prerequisites
You will need node setup, preferably something fresh. At least one of us uses nvm
to manage node, for Angular you'll need a version higher than 10.9.0
It's important to note, as part of understanding this project, how and why it was intially setup.
- Technology choices
- Angular 8 - Really low start up cost to learn and to implement
- Angular CLI - Command Line tool for super easy creation of Angular components
- Typescript - Easy language for most of our developers to jump on
- NPM - package manager that is supported by Nexus Repository
- You can use Yarn if you'd like
- SASS - currently one of the best CSS precompilers
- Angular Material 6 - Easy setup of a simple UI look and feel
- We followed the Quick start guide from Angular
Installation
-
NPM
- install npm from https://nodejs.org/en/
- install the latest angular cli with
npm install -g @angular/cli@latest
- install all other dependencies with
npm install
from project root
-
Yarn
- install yarn
- install angular cli with
yarn global add @angular/cli@latest
- install all other dependencies with
yarn
from project root
Development
Development server
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
Code scaffolding
Run ng generate component component-name
to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module
.
Build
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the -prod
flag for a production build.
Running unit tests
Currently not running, help us out and get them running!
Running end-to-end tests
Currently not running, help us out and get them running!
Further help
To get more help on the Angular CLI use ng help
or go check out the Angular CLI README.
Style Guide
We currently follow the Angular.io style guide.
IntelliJ Settings
- Preferences > Editor > Code Style > TypeScript > Spaces > Within : Enable "ES6 import/export" braces
Data
Using this externally, you'll need to wire up to http://search.maven.org/solrsearch/select
similar to how we do in Production. You can see these settings in environment.prod.ts
.
You'll likely need to use a plugin to modify CORS headers as this will produce a cross domain request, there are quite a few plugins out there. For Chrome you can use this one.
Alternatively, you can use a reverse proxy server like cors-anywhere to add CORS header to your respose. This would be slow but remove any client side plugin dependency. You can refer following sample config environment.prod.ts
.
Getting help
Looking to contribute to our code but need some help? There's a few ways to get information: