This repository is a seed for Spring Boot application with Angular 2 (AOT) client side.
The client side is based on the Angular2 AOT Webpack repository.
The application contains a simple REST service and a hello world app in the client side which calls the REST service on start.
The src/main/java directory is for the java source files.
src/main/web directory contains the source files for the client.
There is an app/ directory for the Angular 2 app.
The index.template.ejs is used for the index.html generation.
The src/main/reources directory is empty at the start. After the build it
will contain the compiled bundles and the generated index.html for the client.
The webpack/webpack.env.js contains the configuration for the webpack.
{
sourcePath: 'src/main/web',
output: 'src/main/resources/static',
appDirectory: 'app',
backendUrl: 'http://localhost:8080',
copyAssets: [
{from: 'favicon.ico'},
{from: 'assets', to: 'assets'}
]
}
sourcePath: the directory for the client side sources.
output: the directory for the generated files.
appDirectory: the Angular 2 app root in the sourcePath directory.
backendUrl: backend URL for the webpack dev server proxy.
copyAssets: copy-webpack-plugin
configuration for the assets. If you need other assets along with bundles you can configure
to copy those from the sourcePath.
In the dev mode and in the build process too the index.html will created automatically based on the
index.template.ejs file in the sourcePath directory. The webpack will insert the generated
JS and CSS links.
npm start will start the webpack dev server. The webpack dev server serves the client from the
src/main/web directory. The webpack is configured to proxy every request to the backend
(except the index.html and the generated js/css files of course).
npm run build will create the AOT files and bundle the code for our client side.
The bundle will be placed in the output directory for the Spring Boot.
This directory is in the .gitignore because it will contain only generated files and will be
cleared in every build so do not place sources there.
npm run ngc will create the AOT files.
npm run webpack will create the bundle without AOT.
npm run webpack-prod will create the bundle from AOT files.
The best method for developing is to concurrently start the spring boot application and the webpack dev server then open http://localhost:9000 in your browser.
If you want to change the sourcePath or the output directory then check the tsconfig.json
and tsconfig.aot.json files too.