Updates README, makes serverURL required
- prints help when misconfigured - prints missing appId, masterKey, serverURL
This commit is contained in:
23
README.md
23
README.md
@@ -44,7 +44,28 @@ app.listen(1337, function() {
|
|||||||
|
|
||||||
### Standalone Parse Server
|
### Standalone Parse Server
|
||||||
|
|
||||||
Parse Server can also run as a standalone API server. The standalone Parse Server can be configured using [environment variables](#configuration). To start the server, just run `npm start`.
|
Parse Server can also run as a standalone API server.
|
||||||
|
You can configure Parse Server with a configuration file, arguments and environment variables.
|
||||||
|
|
||||||
|
To start the server:
|
||||||
|
|
||||||
|
`npm start -- --appId MYAPP --masterKey MASTER_KEY`.
|
||||||
|
|
||||||
|
To get more help for running the parse-server standalone, you can run:
|
||||||
|
|
||||||
|
`$ npm start -- --help`
|
||||||
|
|
||||||
|
The standalone API server supports loading a configuration file in JSON format:
|
||||||
|
|
||||||
|
`$ npm start -- path/to/your/config.json`
|
||||||
|
|
||||||
|
The default port is 1337, to use a different port set the PORT environment variable:
|
||||||
|
|
||||||
|
`$ PORT=8080 npm start -- path/to/your/config.json`
|
||||||
|
|
||||||
|
The standalone Parse Server can be configured using [environment variables](#configuration).
|
||||||
|
|
||||||
|
Please refer to the [configuration section](#configuration) or help;
|
||||||
|
|
||||||
You can also install Parse Server globally:
|
You can also install Parse Server globally:
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
"babel-runtime": "^6.5.0",
|
"babel-runtime": "^6.5.0",
|
||||||
"bcrypt-nodejs": "0.0.3",
|
"bcrypt-nodejs": "0.0.3",
|
||||||
"body-parser": "^1.14.2",
|
"body-parser": "^1.14.2",
|
||||||
|
"colors": "^1.1.2",
|
||||||
"commander": "^2.9.0",
|
"commander": "^2.9.0",
|
||||||
"deepcopy": "^0.6.1",
|
"deepcopy": "^0.6.1",
|
||||||
"express": "^4.13.4",
|
"express": "^4.13.4",
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
"serverURL": {
|
"serverURL": {
|
||||||
env: "PARSE_SERVER_URL",
|
env: "PARSE_SERVER_URL",
|
||||||
help: "URL to your parse server with http:// or https://"
|
help: "URL to your parse server with http:// or https://",
|
||||||
|
required: true
|
||||||
},
|
},
|
||||||
"databaseURI": {
|
"databaseURI": {
|
||||||
env: "PARSE_SERVER_DATABASE_URI",
|
env: "PARSE_SERVER_DATABASE_URI",
|
||||||
@@ -65,7 +66,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
"enableAnonymousUsers": {
|
"enableAnonymousUsers": {
|
||||||
env: "PARSE_SERVER_ENABLE_ANON_USERS",
|
env: "PARSE_SERVER_ENABLE_ANON_USERS",
|
||||||
help: "Enable (or disable) anon users, enabled by default",
|
help: "Enable (or disable) anon users, defaults to true",
|
||||||
action: function(opt) {
|
action: function(opt) {
|
||||||
if (opt == "true" || opt == "1") {
|
if (opt == "true" || opt == "1") {
|
||||||
return true;
|
return true;
|
||||||
@@ -75,7 +76,8 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
"mountPath": {
|
"mountPath": {
|
||||||
env: "PARSE_SERVER_MOUNT_PATH",
|
env: "PARSE_SERVER_MOUNT_PATH",
|
||||||
help: "Mount path for the server, defaults to /"
|
help: "Mount path for the server, defaults to /parse",
|
||||||
|
default: "/parse"
|
||||||
},
|
},
|
||||||
"databaseAdapter": {
|
"databaseAdapter": {
|
||||||
env: "PARSE_SERVER_DATABASE_ADAPTER",
|
env: "PARSE_SERVER_DATABASE_ADAPTER",
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ var express = require('express');
|
|||||||
var ParseServer = require("../index").ParseServer;
|
var ParseServer = require("../index").ParseServer;
|
||||||
var definitions = require('./cli-definitions');
|
var definitions = require('./cli-definitions');
|
||||||
var program = require('./utils/commander');
|
var program = require('./utils/commander');
|
||||||
|
var colors = require('colors');
|
||||||
|
|
||||||
program.loadDefinitions(definitions);
|
program.loadDefinitions(definitions);
|
||||||
|
|
||||||
@@ -19,15 +20,15 @@ program.on('--help', function(){
|
|||||||
console.log(' Usage with npm start');
|
console.log(' Usage with npm start');
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log(' $ npm start -- path/to/config.json');
|
console.log(' $ npm start -- path/to/config.json');
|
||||||
console.log(' $ npm start -- --appId APP_ID --masterKey MASTER_KEY');
|
console.log(' $ npm start -- --appId APP_ID --masterKey MASTER_KEY --serverURL serverURL');
|
||||||
console.log(' $ npm start -- --appId APP_ID --masterKey MASTER_KEY');
|
console.log(' $ npm start -- --appId APP_ID --masterKey MASTER_KEY --serverURL serverURL');
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log(' Usage:');
|
console.log(' Usage:');
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log(' $ parse-server path/to/config.json');
|
console.log(' $ parse-server path/to/config.json');
|
||||||
console.log(' $ parse-server -- --appId APP_ID --masterKey MASTER_KEY');
|
console.log(' $ parse-server -- --appId APP_ID --masterKey MASTER_KEY --serverURL serverURL');
|
||||||
console.log(' $ parse-server -- --appId APP_ID --masterKey MASTER_KEY');
|
console.log(' $ parse-server -- --appId APP_ID --masterKey MASTER_KEY --serverURL serverURL');
|
||||||
console.log('');
|
console.log('');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -40,6 +41,14 @@ if (program.args.length > 0 ) {
|
|||||||
jsonPath = path.resolve(jsonPath);
|
jsonPath = path.resolve(jsonPath);
|
||||||
options = require(jsonPath);
|
options = require(jsonPath);
|
||||||
console.log(`Configuation loaded from ${jsonPath}`)
|
console.log(`Configuation loaded from ${jsonPath}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!program.appId || !program.masterKey || !program.serverURL) {
|
||||||
|
program.outputHelp();
|
||||||
|
console.error("");
|
||||||
|
console.error(colors.red("ERROR: appId, masterKey and serverURL are required"));
|
||||||
|
console.error("");
|
||||||
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var options = Object.keys(definitions).reduce(function (options, key) {
|
var options = Object.keys(definitions).reduce(function (options, key) {
|
||||||
@@ -49,8 +58,6 @@ var options = Object.keys(definitions).reduce(function (options, key) {
|
|||||||
return options;
|
return options;
|
||||||
}, options);
|
}, options);
|
||||||
|
|
||||||
options.mountPath = options.mountPath || '/';
|
|
||||||
|
|
||||||
var app = express();
|
var app = express();
|
||||||
var api = new ParseServer(options);
|
var api = new ParseServer(options);
|
||||||
app.use(options.mountPath, api);
|
app.use(options.mountPath, api);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ var program = require('commander');
|
|||||||
|
|
||||||
var _definitions;
|
var _definitions;
|
||||||
var _reverseDefinitions;
|
var _reverseDefinitions;
|
||||||
|
var _defaults;
|
||||||
program.loadDefinitions = function(definitions) {
|
program.loadDefinitions = function(definitions) {
|
||||||
_definitions = definitions;
|
_definitions = definitions;
|
||||||
Object.keys(definitions).reduce(function(program, opt){
|
Object.keys(definitions).reduce(function(program, opt){
|
||||||
@@ -16,7 +16,12 @@ program.loadDefinitions = function(definitions) {
|
|||||||
}
|
}
|
||||||
return program.option(`--${opt} [${opt}]`)
|
return program.option(`--${opt} [${opt}]`)
|
||||||
}, program);
|
}, program);
|
||||||
|
_defaults = Object.keys(definitions).reduce(function(defs, opt) {
|
||||||
|
if(_definitions[opt].default) {
|
||||||
|
defs[opt] = _definitions[opt].default;
|
||||||
|
}
|
||||||
|
return defs;
|
||||||
|
}, {});
|
||||||
_reverseDefinitions = Object.keys(definitions).reduce(function(object, key){
|
_reverseDefinitions = Object.keys(definitions).reduce(function(object, key){
|
||||||
let value = definitions[key];
|
let value = definitions[key];
|
||||||
if (typeof value == "object") {
|
if (typeof value == "object") {
|
||||||
@@ -65,6 +70,11 @@ program.parse = function(args, env) {
|
|||||||
program[key] = envOptions[key];
|
program[key] = envOptions[key];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Object.keys(_defaults).forEach(function(key){
|
||||||
|
if (!program[key]) {
|
||||||
|
program[key] = _defaults[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = program;
|
module.exports = program;
|
||||||
|
|||||||
Reference in New Issue
Block a user