Update to generate front-end constants on server startup
To avoid extra webpacking on changing configs and follow the 12 factor app
This commit is contained in:
parent
b07eeed0c5
commit
448b006194
5 changed files with 34 additions and 12 deletions
16
app.js
16
app.js
|
@ -29,6 +29,22 @@ var auth = require('./lib/auth.js')
|
||||||
var response = require('./lib/response.js')
|
var response = require('./lib/response.js')
|
||||||
var models = require('./lib/models')
|
var models = require('./lib/models')
|
||||||
|
|
||||||
|
// generate front-end constants by template
|
||||||
|
var constpath = path.join(__dirname, './public/js/lib/common/constant.ejs')
|
||||||
|
var data = {
|
||||||
|
domain: config.domain,
|
||||||
|
urlpath: config.urlpath,
|
||||||
|
debug: config.debug,
|
||||||
|
version: config.version,
|
||||||
|
GOOGLE_API_KEY: config.google && config.google.GOOGLE_API_KEY,
|
||||||
|
GOOGLE_CLIENT_ID: config.google && config.google.GOOGLE_CLIENT_ID,
|
||||||
|
DROPBOX_APP_KEY: config.dropbox && config.google.DROPBOX_APP_KEY
|
||||||
|
}
|
||||||
|
ejs.renderFile(constpath, data, {}, function (err, str) {
|
||||||
|
if (err) throw new Error(err)
|
||||||
|
fs.writeFileSync(path.join(__dirname, './public/build/constant.js'), str)
|
||||||
|
})
|
||||||
|
|
||||||
// server setup
|
// server setup
|
||||||
var app = express()
|
var app = express()
|
||||||
var server = null
|
var server = null
|
||||||
|
|
|
@ -173,8 +173,9 @@ module.exports = {
|
||||||
version: version,
|
version: version,
|
||||||
minimumCompatibleVersion: minimumCompatibleVersion,
|
minimumCompatibleVersion: minimumCompatibleVersion,
|
||||||
maintenance: maintenance,
|
maintenance: maintenance,
|
||||||
debug: debug,
|
domain: domain,
|
||||||
urlpath: urlpath,
|
urlpath: urlpath,
|
||||||
|
debug: debug,
|
||||||
port: port,
|
port: port,
|
||||||
alloworigin: alloworigin,
|
alloworigin: alloworigin,
|
||||||
usessl: usessl,
|
usessl: usessl,
|
||||||
|
|
8
public/js/lib/common/constant.ejs
Normal file
8
public/js/lib/common/constant.ejs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
window.domain = '<%- domain %>'
|
||||||
|
window.urlpath = '<%- urlpath %>'
|
||||||
|
window.debug = <%- debug %>
|
||||||
|
window.version = '<%- version %>'
|
||||||
|
|
||||||
|
window.GOOGLE_API_KEY = '<%- GOOGLE_API_KEY %>'
|
||||||
|
window.GOOGLE_CLIENT_ID = '<%- GOOGLE_CLIENT_ID %>'
|
||||||
|
window.DROPBOX_APP_KEY = '<%- DROPBOX_APP_KEY %>'
|
|
@ -1,14 +1,10 @@
|
||||||
import configJson from '../../../../config.json' // root path json config
|
export const GOOGLE_API_KEY = window.GOOGLE_API_KEY || ''
|
||||||
|
export const GOOGLE_CLIENT_ID = window.GOOGLE_CLIENT_ID || ''
|
||||||
|
export const DROPBOX_APP_KEY = window.DROPBOX_APP_KEY || ''
|
||||||
|
|
||||||
const config = process.env.NODE_ENV === 'production' ? configJson.production : configJson.development
|
export const domain = window.domain || '' // domain name
|
||||||
|
export const urlpath = window.urlpath || '' // sub url path, like: www.example.com/<urlpath>
|
||||||
export const GOOGLE_API_KEY = (config.google && config.google.apiKey) || ''
|
export const debug = window.debug || false
|
||||||
export const GOOGLE_CLIENT_ID = (config.google && config.google.clientID) || ''
|
|
||||||
export const DROPBOX_APP_KEY = (config.dropbox && config.dropbox.appKey) || ''
|
|
||||||
|
|
||||||
export const domain = config.domain || '' // domain name
|
|
||||||
export const urlpath = config.urlpath || '' // sub url path, like: www.example.com/<urlpath>
|
|
||||||
export const debug = config.debug || false
|
|
||||||
|
|
||||||
export const port = window.location.port
|
export const port = window.location.port
|
||||||
export const serverurl = `${window.location.protocol}//${domain || window.location.hostname}${port ? ':' + port : ''}${urlpath ? '/' + urlpath : ''}`
|
export const serverurl = `${window.location.protocol}//${domain || window.location.hostname}${port ? ':' + port : ''}${urlpath ? '/' + urlpath : ''}`
|
||||||
|
@ -16,4 +12,4 @@ window.serverurl = serverurl
|
||||||
export const noteid = urlpath ? window.location.pathname.slice(urlpath.length + 1, window.location.pathname.length).split('/')[1] : window.location.pathname.split('/')[1]
|
export const noteid = urlpath ? window.location.pathname.slice(urlpath.length + 1, window.location.pathname.length).split('/')[1] : window.location.pathname.split('/')[1]
|
||||||
export const noteurl = `${serverurl}/${noteid}`
|
export const noteurl = `${serverurl}/${noteid}`
|
||||||
|
|
||||||
export const version = '0.5.0'
|
export const version = window.version
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<script src="<%= webpackConfig.output.baseUrl %>/build/constant.js"></script>
|
||||||
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
|
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
|
||||||
<script src="<%= webpackConfig.output.baseUrl %><%= htmlWebpackPlugin.files.chunks[chunk].entry %>" defer></script>
|
<script src="<%= webpackConfig.output.baseUrl %><%= htmlWebpackPlugin.files.chunks[chunk].entry %>" defer></script>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
Loading…
Reference in a new issue