Преглед изворни кода

Merge pull request #2394 from overleaf/bg-precompile-pug-templates

precompile pug templates

GitOrigin-RevId: 71851f97c06b8c3866c56508a84711fa2541d870
Brian Gough пре 6 година
родитељ
комит
e51893ffb1
2 измењених фајлова са 19 додато и 49 уклоњено
  1. 2 0
      services/web/app/src/infrastructure/Server.js
  2. 17 49
      services/web/app/src/infrastructure/Views.js

+ 2 - 0
services/web/app/src/infrastructure/Server.js

@@ -29,6 +29,7 @@ const RedirectManager = require('./RedirectManager')
 const ProxyManager = require('./ProxyManager')
 const ProxyManager = require('./ProxyManager')
 const translations = require('translations-sharelatex').setup(Settings.i18n)
 const translations = require('translations-sharelatex').setup(Settings.i18n)
 const Modules = require('./Modules')
 const Modules = require('./Modules')
+const Views = require('./Views')
 
 
 const ErrorController = require('../Features/Errors/ErrorController')
 const ErrorController = require('../Features/Errors/ErrorController')
 const HttpErrorController = require('../Features/Errors/HttpErrorController')
 const HttpErrorController = require('../Features/Errors/HttpErrorController')
@@ -168,6 +169,7 @@ expressLocals(webRouter, privateApiRouter, publicApiRouter)
 if (app.get('env') === 'production') {
 if (app.get('env') === 'production') {
   logger.info('Production Enviroment')
   logger.info('Production Enviroment')
   app.enable('view cache')
   app.enable('view cache')
+  Views.precompileViews(app)
 }
 }
 
 
 webRouter.use(function(req, res, next) {
 webRouter.use(function(req, res, next) {

+ 17 - 49
services/web/app/src/infrastructure/Views.js

@@ -1,55 +1,23 @@
 const logger = require('logger-sharelatex')
 const logger = require('logger-sharelatex')
 const pug = require('pug')
 const pug = require('pug')
+const globby = require('globby')
 
 
-// List of view names found with
-//
-// git grep res.render | perl filter.pl  | sort -u
-//
-// where filter.pl is the perl script below.
-//
-// #!/usr/bin/perl
-// while (<>) {print "'$1',\n" if /render\(\'(.*?)\'/;}
+// Generate list of view names from app/views
+
+const viewList = globby
+  .sync('**/*.pug', {
+    onlyFiles: true,
+    concurrency: 1,
+    ignore: '**/_*.pug',
+    cwd: 'app/views'
+  })
+  .map(x => {
+    return x.replace(/\.pug$/, '') // strip trailing .pug extension
+  })
+  .filter(x => {
+    return !/^_/.test(x)
+  })
 
 
-const viewList = [
-  'admin/index',
-  'admin/register',
-  'beta_program/opt_in',
-  'blog/blog_holder',
-  'external/home/sl',
-  'external/home/v2',
-  'general/404',
-  'general/500',
-  'general/closed',
-  'project/cannot-import-v1-project',
-  'project/editor',
-  'project/importing',
-  'project/invite/not-valid',
-  'project/invite/show',
-  'project/list',
-  'project/v2-import',
-  'referal/bonus',
-  'subscriptions/canceled_subscription',
-  'subscriptions/dashboard',
-  'subscriptions/new',
-  'subscriptions/successful_subscription',
-  'subscriptions/team/invite',
-  'subscriptions/upgradeToAnnual',
-  'sudo_mode/sudo_mode_prompt',
-  'user/activate',
-  'user/confirm_email',
-  'user/login',
-  'user/logout',
-  'user_membership/index',
-  'user_membership/new',
-  'user/one_time_login',
-  'user/passwordReset',
-  'user/reconfirm',
-  'user/register',
-  'user/restricted',
-  'user/sessions',
-  'user/setPassword',
-  'user/settings'
-]
 module.exports = {
 module.exports = {
   precompileViews(app) {
   precompileViews(app) {
     let startTime = Date.now()
     let startTime = Date.now()
@@ -62,7 +30,7 @@ module.exports = {
         logger.log({ view }, 'compiled')
         logger.log({ view }, 'compiled')
         success++
         success++
       } catch (err) {
       } catch (err) {
-        logger.error({ view, err }, 'error compiling')
+        logger.error({ view, err: err.message }, 'error compiling')
         failures++
         failures++
       }
       }
     })
     })