module.exports = function mountLoopBackExplorer(app) {
  if (process.env.NODE_ENV === 'production') {
    return;
  }
  var explorer;
  try {
    explorer = require('loopback-explorer');
  } catch(err) {
    // Print the message only when the app was started via `app.listen()`.
    // Do not print any message when the project is used as a component.
    app.once('started', function() {
      console.log(
        'Run `npm install loopback-explorer` to enable the LoopBack explorer'
      );
    });
    return;
  }

  var restApiRoot = app.get('restApiRoot');

  var explorerApp = explorer(app, { basePath: restApiRoot });
  app.use('/explorer', explorerApp);
  app.once('started', function() {
    var baseUrl = app.get('url').replace(/\/$/, '');
    // express 4.x (loopback 2.x) uses `mountpath`
    // express 3.x (loopback 1.x) uses `route`
    var explorerPath = explorerApp.mountpath || explorerApp.route;
    console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
  });
};
