Giter Site home page Giter Site logo

somrakexie / play-scalajs.g8 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vmunier/play-scalajs.g8

0.0 0.0 0.0 1.64 MB

Giter8 template to get started with Play and Scala.js.

License: Apache License 2.0

Shell 23.26% Scala 62.20% HTML 12.67% Procfile 1.87%

play-scalajs.g8's Introduction

Play Framework with Scala.js

License Gitter

This is a Giter8 template showing how you can integrate a Play project with a Scala.js project.

Run the application

$ sbt new vmunier/play-scalajs.g8
$ cd play-scalajs
$ sbt
sbt:root> project server
[server] run
$ open http://localhost:9000

The application contains three directories:

  • server Play application (server side)
  • client Scala.js application (client side)
  • shared Scala code that you want to share between the server and the client

Features

The application uses the sbt-web-scalajs sbt plugin.

  • Run your application like a regular Play app
    • compile triggers the Scala.js fastLinkJS task
    • run triggers the Scala.js fastLinkJS task on page refresh
    • ~compile, ~run, continuous compilation is also available
  • Compilation errors from the Scala.js projects are also displayed in the browser
  • Set scalaJSStage to FullOptStage when packaging your application for fullLinkJS to be executed instead of fastLinkJS:
    sbt 'set Global / scalaJSStage := FullOptStage' Universal/packageBin
    
  • Source maps
    • Open your browser dev tool to set breakpoints or to see the guilty line of code when an exception is thrown.
    • Source Maps are enabled in both fastLinkJS and fullLinkJS by default. If you wish to disable Source Maps in fullLinkJS, then add Compile / fullLinkJS / scalaJSLinkerConfig ~= (_.withSourceMap(false)) in the Scala.js projects.

Cleaning

The root project aggregates all the other projects. Use this root project to clean all the projects at once.

$ sbt
sbt:root> clean

Load the server project at sbt startup

Add the following line to build.sbt if you wish to load the server project at sbt startup:

Global / onLoad := (Global / onLoad).value.andThen(state => "project server" :: state)

clean will only delete the server's generated files (in the server/target directory). Call root/clean to delete the generated files for all the projects.

IDE integration

IntelliJ

In IntelliJ, open Project wizard, select Import Project, choose the root folder and click OK. Select Import project from external model option, choose SBT project and click Next. Select additional import options and click Finish. Make sure you use the IntelliJ Scala Plugin v2017.2.7 or higher. There are known issues with prior versions of the plugin.

Eclipse

  1. Add addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4") to project/plugins.sbt
  2. Add the following lines to the server's settings in build.sbt:
// Compile the project before generating Eclipse files, so that generated .scala or .class files for Twirl templates are present
EclipseKeys.preTasks := Seq(Compile / compile)
  1. Run $ sbt "eclipse with-source=true"
  2. Inside Eclipse, File/Import/General/Existing project..., choose the root folder. Uncheck the third checkbox to only import client, server and shared/.jvm, click Finish. Alt text

play-scalajs.g8's People

Contributors

benmccann avatar gitter-badger avatar jkutner avatar kaeawc avatar leonardehrenfried avatar nremond avatar razem-io avatar scala-steward avatar sjrd avatar veinhorn avatar vmunier avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.