Skip to content

Commit

Permalink
Dev serve frontend deps from bower
Browse files Browse the repository at this point in the history
  • Loading branch information
rvl committed Oct 22, 2017
1 parent c5895a6 commit 4c0cbe5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
17 changes: 12 additions & 5 deletions DevServer.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import Network.Wai.Middleware.Rewrite
import Network.Wai.UrlMap
import Control.Applicative
import qualified Data.Text as T
import Data.Maybe (fromMaybe)
import System.Environment (lookupEnv)

main :: IO ()
main = devServerMain "127.0.0.1" 8000
Expand All @@ -27,16 +29,21 @@ devServerMain :: String -> Port -> IO ()
devServerMain host port = do
putStrLn $ "Running dev server on " <> host <> ":" <> show port

let app = logStdoutDev (devServer "frontend" "dist-ghcjs/build/tour/tour.jsexe")
bc <- fromMaybe "frontend" <$> lookupEnv "BOWER_COMPONENTS"
let app = logStdoutDev (devServer
"frontend"
"dist-ghcjs/build/tour/tour.jsexe"
(bc </> "bower_components"))

runSettings (defaultSettings & setTimeout 3600 & setPort port & setHost (fromString host)) app

-- Serve static files and javascript from build directory.
-- Any other route will result in the SPA html.
devServer :: FilePath -> FilePath -> Application
devServer frontend jsexe = rewriteJS (mapUrls urls)
devServer :: FilePath -> FilePath -> FilePath -> Application
devServer frontend jsexe bc = rewriteJS (mapUrls urls)
where urls = mount "static" (staticServer (frontend </> "static"))
<|> mount "jsexe" (staticServer jsexe)
<|> mount "bower_components" (staticServer bc)
<|> mountRoot (serveFile (frontend </> "index.html"))

-- | Static file server with caching disabled.
Expand All @@ -51,5 +58,5 @@ serveFile f req respond = respond (responseFile status200 [] f Nothing)
rewriteJS :: Middleware
rewriteJS = rewritePureWithQueries $ \(ps, qs) _ -> (rewrite ps, qs)
where
rewrite ps = if T.isSuffixOf ".js" f then ["jsexe", f] else ps
where f = if null ps then "" else last ps
rewrite [p] = if T.isSuffixOf ".js" p then ["jsexe", p] else [p]
rewrite ps = ps
15 changes: 6 additions & 9 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,17 @@
<head>
<meta charset="utf-8">
<base href="/">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.2.0/leaflet.css" integrity="sha256-LcmP8hlMTofQrGU6W2q3tUnDnDZ1QVraxfMkP060ekM=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.2.0/leaflet.js" integrity="sha256-kdEnCVOWosn3TNsGslxB8ffuKdrZoGQdIdPwh7W1CsE=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.min.js" integrity="sha256-UGwvyUFH6Qqn0PSyQVw4q3vIX0wV1miKTracNJzAWPc=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="static/tour.css" />
<link rel="stylesheet" href="bower_components/leaflet/dist/leaflet.css" />
<link rel="stylesheet" href="bower_components/components-font-awesome/css/font-awesome.css" />
<script src="bower_components/leaflet/dist/leaflet.js" ></script>
<script src="bower_components/chart.js/dist/Chart.js" ></script>

<!--
<link rel="stylesheet" href="static/tour.css" />
<script language="javascript" src="rts.js"></script>
<script language="javascript" src="lib.js"></script>
<script language="javascript" src="out.js"></script>
-->
</head>
<body>
</body>
<!-- <script language="javascript" src="runmain.js" defer></script> -->
<script src="all.js"></script>
<script language="javascript" src="runmain.js" defer></script>
</html>

0 comments on commit 4c0cbe5

Please sign in to comment.