Grails React Profile

A profile for creating applications using React

Version: 1.1.1.BUILD-SNAPSHOT

Table of Contents

1 Introduction

Grails Profiles encapsulate project commands, templates, and plugins. To create an application using the react profile you can use the next command:

grails create-app myapp --profile=react

You can also choose this project when generating your project from the Grails Application Forge, either from the web app or via the API:

curl -O start.grails.org/myapp.zip -d profile=react

Grails Application Forge is a great way to discover the different provided features in the profile.

2 Usage

This profile provides a client/server multi-project build structure. The "server" is a Grails app using the rest-api profile with CORS enabled. It can be started using grails run-app (from the server directory) or using the Gradle wrapper:

./gradlew server:bootRun

The React client app has been built using the create-react-app CLI. It’s configured for both npm and yarn. and can be started via npm start or yarn start) (in which case you will need to run npm install or yarn to install project dependencies) or using the Gradle wrapper (which will install npm dependencies automatically if needed):

./gradlew client:start

The client app’s build.gradle defines other tasks to test and build the app using react-scripts. Please see create-react-app’s documentation for more information.

The client/build.gradle file also provides a bootRun task to support running both client & server projects in parallel. To do this, use the Gradle wrapper from the root of the project, and use the -parallel flag:

./gradlew bootRun -parallel

Although the profile creates a multi-project build, it is also possible to combine both client and server projects into a single deployable artifact (WAR or JAR file). Refer to the Guide Combining the React profile projects to learn how.

3 Upgrade

You can explore the differences between Grails versions, to ease the upgrade of your Grails application created with the react profile.

4 Guides, Quickcast and Blog Posts

To learn more about the React profiles, check the following Grails Guides & Quickcasts:

The following blog posts would be useful too:

5 Profile Info

You can always get information about the provided command and available features executing grails profile-info react

You will see an output similar to:

Profile: react
--------------------
A profile for creating Grails applications with a React frontend

Provided Commands:
--------------------
* help - Prints help information for a specific command
* open - Opens a file in the project
* gradle - Allows running of Gradle tasks
* create-controller - Creates a controller
* create-domain-resource - Creates a domain class that represents a resource
* create-functional-test - Creates an functional test
* create-integration-test - Creates an integration test
* create-interceptor - Creates an interceptor
* create-restful-controller - Creates a REST controller
* clean - Cleans a Grails application's compiled sources
* compile - Compiles a Grails application
* create-command - Creates an Application Command
* create-domain-class - Creates a Domain Class
* create-service - Creates a Service
* create-unit-test - Creates a unit test
* install - Installs a Grails application or plugin into the local Maven cache
* assemble - Creates a JAR or WAR archive for production deployment
* bug-report - Creates a zip file that can be attached to issue reports for the current project
* console - Runs the Grails interactive console
* create-script - Creates a Grails script
* dependency-report - Prints out the Grails application's dependencies
* list-plugins - Lists available plugins from the Plugin Repository
* plugin-info - Prints information about the given plugin
* run-app - Runs a Grails application
* run-command - Executes Grails commands
* run-script - Executes Groovy scripts in a Grails context
* shell - Runs the Grails interactive shell
* stats - Prints statistics about the project
* stop-app - Stops the running Grails application
* test-app - Runs the applications tests
* generate-all - Generates a controller that performs REST operations
* generate-controller - Generates a controller that performs REST operations
* generate-functional-test - Generates a functional test for a controller that performs REST operations
* generate-unit-test - Generates a unit test for a controller that performs REST operations
* generate-views - Generates a controller that performs REST operations

Provided Features:
--------------------
* security - Adds Spring Security REST to the project
* asset-pipeline - Adds Asset Pipeline to a Grails project
* events - Adds support for the Grails EventBus abstraction
* gsp - Adds support for GSP to the project
* hibernate4 - Adds GORM for Hibernate 4 to the project
* hibernate5 - Adds GORM for Hibernate 5 to the project
* json-views - Adds support for JSON Views to the project
* less-asset-pipeline - Adds LESS Transpiler Asset Pipeline to a Grails project
* markup-views - Adds support for Markup Views to the project
* mongodb - Adds GORM for MongoDB to the project
* neo4j - Adds GORM for Neo4j to the project
* rx-mongodb - Adds RxGORM for MongoDB to the project

6 Support

For support, please use the Grails Community Slack or open an issue on Github