Separate development and production environments
Set NODE_ENV at run time or build time to switch the app between dev and production modes. At build time, the current NODE_ENV will be included in the packaged app's package.json file. At runtime we read NODE_ENV from package.json, but also allow the local environment variable to override. A query string parsed by a preload script exposes the value to the renderer, which then determines whether we use the staging or production server. Additionally, different environments have different user data directories. // FREEBIE
This commit is contained in:
parent
45bf7330ac
commit
2bbd0d58c6
4 changed files with 33 additions and 5 deletions
|
@ -39,6 +39,10 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
|
var SERVER_URL = 'https://textsecure-service-staging.whispersystems.org';
|
||||||
|
if (window.env && window.env.node_env === 'production') {
|
||||||
|
SERVER_URL = 'https://textsecure-service-ca.whispersystems.org';
|
||||||
|
}
|
||||||
|
|
||||||
var SERVER_PORTS = [80, 4433, 8443];
|
var SERVER_PORTS = [80, 4433, 8443];
|
||||||
var messageReceiver;
|
var messageReceiver;
|
||||||
window.getSocketStatus = function() {
|
window.getSocketStatus = function() {
|
||||||
|
|
18
main.js
18
main.js
|
@ -3,6 +3,7 @@ const app = electron.app
|
||||||
const BrowserWindow = electron.BrowserWindow
|
const BrowserWindow = electron.BrowserWindow
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const url = require('url')
|
const url = require('url')
|
||||||
|
const fs = require('fs')
|
||||||
const autoUpdater = require('electron-updater').autoUpdater
|
const autoUpdater = require('electron-updater').autoUpdater
|
||||||
const autoUpdaterInterval = 60 * 60 * 1000;
|
const autoUpdaterInterval = 60 * 60 * 1000;
|
||||||
|
|
||||||
|
@ -22,6 +23,14 @@ if (shouldQuit) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read package.json
|
||||||
|
const package_json = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf-8'))
|
||||||
|
const NODE_ENV = process.env.NODE_ENV || package_json.NODE_ENV || 'development';
|
||||||
|
|
||||||
|
// use a separate data directory for development
|
||||||
|
if (NODE_ENV !== 'production') {
|
||||||
|
app.setPath('userData', path.join(app.getPath('appData'), 'Signal-' + NODE_ENV))
|
||||||
|
}
|
||||||
// Keep a global reference of the window object, if you don't, the window will
|
// Keep a global reference of the window object, if you don't, the window will
|
||||||
// be closed automatically when the JavaScript object is garbage collected.
|
// be closed automatically when the JavaScript object is garbage collected.
|
||||||
let mainWindow
|
let mainWindow
|
||||||
|
@ -31,14 +40,19 @@ function createWindow () {
|
||||||
mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
width: 800,
|
width: 800,
|
||||||
height: 600,
|
height: 600,
|
||||||
webPreferences: { nodeIntegration: false, sandbox: true }
|
webPreferences: {
|
||||||
|
nodeIntegration: false,
|
||||||
|
sandbox: true,
|
||||||
|
preload: path.join(__dirname, 'preload.js')
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// and load the index.html of the app.
|
// and load the index.html of the app.
|
||||||
mainWindow.loadURL(url.format({
|
mainWindow.loadURL(url.format({
|
||||||
pathname: path.join(__dirname, 'background.html'),
|
pathname: path.join(__dirname, 'background.html'),
|
||||||
protocol: 'file:',
|
protocol: 'file:',
|
||||||
slashes: true
|
slashes: true,
|
||||||
|
query: { node_env: NODE_ENV }
|
||||||
}))
|
}))
|
||||||
|
|
||||||
// Open the DevTools.
|
// Open the DevTools.
|
||||||
|
|
|
@ -32,9 +32,9 @@
|
||||||
"test": "grunt test",
|
"test": "grunt test",
|
||||||
"lint": "grunt jshint",
|
"lint": "grunt jshint",
|
||||||
"start": "electron .",
|
"start": "electron .",
|
||||||
"pack": "build --dir",
|
"pack": "build --dir --em.NODE_ENV=$NODE_ENV",
|
||||||
"dist": "build",
|
"dist": "build --em.NODE_ENV=$NODE_ENV",
|
||||||
"release": "build"
|
"release": "build --em.NODE_ENV=$NODE_ENV"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"appId": "org.whispersystems.signal-desktop",
|
"appId": "org.whispersystems.signal-desktop",
|
||||||
|
|
10
preload.js
Normal file
10
preload.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/*
|
||||||
|
* Pending electron 1.6.x
|
||||||
|
* const env = require('url').parse(window.location, true).query;
|
||||||
|
*/
|
||||||
|
|
||||||
|
window.env = {};
|
||||||
|
window.location.search.substring(1).split('&').forEach(function(variable) {
|
||||||
|
var pair = variable.split('=');
|
||||||
|
env[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue