Просмотр исходного кода

add npm script 'server:prod:ci'

Yuki Takei 8 лет назад
Родитель
Сommit
0f09bd67fc
3 измененных файлов с 46 добавлено и 37 удалено
  1. 9 0
      app.js
  2. 36 37
      lib/crowi/index.js
  3. 1 0
      package.json

+ 9 - 0
app.js

@@ -8,6 +8,7 @@
 require('module-alias/register');
 
 const logger = require('@alias/logger')('growi');
+const helpers = require('./config/helpers');
 const growi = new (require('./lib/crowi'))(__dirname, process.env);
 
 
@@ -23,6 +24,14 @@ process.on('unhandledRejection', (reason, p) => {
 });
 
 growi.start()
+  .then(express => {
+    if (helpers.hasProcessFlag('ci')) {
+      logger.info('"--ci" flag is detected. Exit process.');
+      express.close(() => {
+        process.exit();
+      });
+    }
+  })
   .catch(err => {
     logger.error('An error occurred, unable to start the server');
     logger.error(err);

+ 36 - 37
lib/crowi/index.js

@@ -341,7 +341,6 @@ Crowi.prototype.getTokens = function() {
 
 Crowi.prototype.start = function() {
   var self = this
-    , http = require('http')
     , server
     , io;
 
@@ -359,45 +358,45 @@ Crowi.prototype.start = function() {
     .then(function() {
       return self.buildServer();
     })
-    .then(function(app) {
-      server = http.createServer(app).listen(self.port, function() {
-        logger.info(`[${self.node_env}] Express server listening on port ${self.port}`);
-
-        // setup for dev
-        if (self.node_env === 'development') {
-          const eazyLogger = require('eazy-logger').Logger({
-            prefix: '[{green:GROWI}] ',
-            useLevelPrefixes: false,
-          });
-
-          eazyLogger.info('{bold:Server URLs:}');
-          eazyLogger.unprefixed('info', '{grey:=======================================}');
-          eazyLogger.unprefixed('info', `         APP: {magenta:http://localhost:${self.port}}`);
-          eazyLogger.unprefixed('info', '{grey:=======================================}');
-
-          self.crowiDev.setup(server, app);
-        }
+    .then(function(express) {
+      return new Promise((resolve) => {
+        server = express.listen(self.port, function() {
+          logger.info(`[${self.node_env}] Express server listening on port ${self.port}`);
+
+          // setup for dev
+          if (self.node_env === 'development') {
+            const eazyLogger = require('eazy-logger').Logger({
+              prefix: '[{green:GROWI}] ',
+              useLevelPrefixes: false,
+            });
+
+            eazyLogger.info('{bold:Server URLs:}');
+            eazyLogger.unprefixed('info', '{grey:=======================================}');
+            eazyLogger.unprefixed('info', `         APP: {magenta:http://localhost:${self.port}}`);
+            eazyLogger.unprefixed('info', '{grey:=======================================}');
+
+            self.crowiDev.setup(server, express);
+          }
+          resolve(server);
+        });
+
+        io = require('socket.io')(server);
+        io.sockets.on('connection', function(socket) {
+        });
+        self.io = io;
+
+        // setup Express Routes
+        self.setupRoutesAtLast(express);
       });
-
-      io = require('socket.io')(server);
-      io.sockets.on('connection', function(socket) {
-      });
-      self.io = io;
-
-      // setup Express Routes
-      self.setupRoutesAtLast(app);
-
-      return app;
     });
 };
 
 Crowi.prototype.buildServer = function() {
-  var express  = require('express')
-    , app = express()
+  var express = require('express')()
     , env = this.node_env
     ;
 
-  require('./express-init')(this, app);
+  require('./express-init')(this, express);
 
   // import plugins
   var Config = this.model('Config');
@@ -405,11 +404,11 @@ Crowi.prototype.buildServer = function() {
   if (isEnabledPlugins) {
     debug('Plugins are enabled');
     var PluginService = require('../plugins/plugin.service');
-    var pluginService = new PluginService(this, app);
+    var pluginService = new PluginService(this, express);
     pluginService.autoDetectAndLoadPlugins();
 
     if (env == 'development') {
-      this.crowiDev.loadPlugins(app);
+      this.crowiDev.loadPlugins(express);
     }
   }
 
@@ -417,7 +416,7 @@ Crowi.prototype.buildServer = function() {
   if (env == 'production') {
     const expressBunyanLogger = require('express-bunyan-logger');
     const logger = require('@alias/logger')('express');
-    app.use(expressBunyanLogger({
+    express.use(expressBunyanLogger({
       logger,
       excludes: ['*'],
     }));
@@ -425,10 +424,10 @@ Crowi.prototype.buildServer = function() {
   // use morgan
   else {
     const morgan = require('morgan');
-    app.use(morgan('dev'));
+    express.use(morgan('dev'));
   }
 
-  return Promise.resolve(app);
+  return Promise.resolve(express);
 };
 
 /**

+ 1 - 0
package.json

@@ -41,6 +41,7 @@
     "postserver:prod:container": "echo ---------------------------------------- && echo [WARNING] && echo   'server:prod:container' is deprecated. && echo   Please use 'sever:prod' && echo ----------------------------------------",
     "server:dev": "env-cmd config/env.dev.js node-dev --respawn app.js",
     "server:prod:container": "npm run server:prod",
+    "server:prod:ci": "npm run server:prod -- --ci",
     "server:prod": "env-cmd config/env.prod.js node app.js",
     "server": "npm run server:dev",
     "start": "npm run server:prod",