forked from docpad-archive/docpad-skeleton-kitchensink
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.coffee
78 lines (57 loc) · 2.06 KB
/
server.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Requires
docpad = require('docpad')
express = require('express')
# =====================================
# Configuration
# Port
# Check our environment for our port number otherwise use a default port
# Usually, node.js webservers will set the process.env.PORT variable to the port we should use
# The process.env.WEBSITEPORT variable can be customised by our parent application if this site is only a module
docpadPort = process.env.WEBSITEPORT || process.env.PORT || 10113
# Create Servers
# Create our webserver to be used with DocPad
docpadServer = express.createServer()
# Prepare our DocPad configuration
docpadConfig =
checkVersion: false
port: docpadPort
maxAge: 86400000 # one day
server: docpadServer
# =====================================
# Start & Extend DocPad
# Create DocPad with our configuration, and wait for it to load
docpadInstance = docpad.createInstance docpadConfig, (err) ->
# Prepare
throw err if err
logger = docpadInstance.logger
# ---------------------------------
# Server Configuration
# Redirect Middleware
# Used to redirect from serveral other locations our website is accessible from
# to another location
docpadServer.use (req,res,next) ->
if req.headers.host in ['www.website.com','website.herokuapp.com'] # from location
res.redirect('http://website.com'+req.url, 301) # to location
else
next()
# Start our server, and perform an initial generation
docpadInstance.action('server generate')
# ---------------------------------
# Server Extensions
# Redirect /madewith to http://docpad.io
# feel free to remove this if you don't think it is an awesome idea
docpadServer.get /^madewith$/, (req, res) ->
project = req.params[0]
res.redirect('http://docpad.io/', 301)
# ---------------------------------
# DocPad Extensions
# Regenerate every hour
# this is used so our cachr feeds stay alive and up-to-date
setInterval(
-> docpadInstance.action 'generate'
1000*60*60 # one hour
)
# =====================================
# Exports
# Export the DocPad Server we created
module.exports = docpadServer