/search-maven-org

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Search.Maven.Org

Join the chat at https://gitter.im/sonatype/nexus-developers

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

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:

  • Chat with us on Gitter
  • Connect with us on Twitter
  • Log an issue here on github