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

Merge pull request #2436 from overleaf/revert-2408-as-dynamic-public-path

Revert "Fetch dynamically fetched scripts from CDN"

GitOrigin-RevId: c443fb278b7e53890d0e83cd02307fad939f5f8c
Hugh O'Brien 6 лет назад
Родитель
Сommit
d1a668ffda

+ 18 - 14
services/web/app/src/infrastructure/ExpressLocals.js

@@ -78,12 +78,6 @@ module.exports = function(webRouter, privateApiRouter, publicApiRouter) {
       staticFilesBase = ''
     }
 
-    res.locals.buildBaseAssetPath = function() {
-      // Return the base asset path (including the CDN url) so that webpack can
-      // use this to dynamically fetch scripts (e.g. PDFjs worker)
-      return Url.resolve(staticFilesBase, '/')
-    }
-
     res.locals.buildJsPath = function(jsFile) {
       let path
       if (IS_DEV_ENV) {
@@ -95,7 +89,7 @@ module.exports = function(webRouter, privateApiRouter, publicApiRouter) {
         // In production: resolve path from webpack manifest file
         // We are guaranteed to have a manifest file since webpack compiles in
         // the build
-        path = `/${webpackManifest[jsFile]}`
+        path = webpackManifest[jsFile]
       }
 
       return Url.resolve(staticFilesBase, path)
@@ -103,7 +97,7 @@ module.exports = function(webRouter, privateApiRouter, publicApiRouter) {
 
     // Temporary hack while jQuery/Angular dependencies are *not* bundled,
     // instead copied into output directory
-    res.locals.buildCopiedJsAssetPath = function(jsFile) {
+    res.locals.buildCopiedJsAssetPath = function(jsFile, opts = {}) {
       let path
       if (IS_DEV_ENV) {
         // In dev: resolve path to root directory
@@ -114,17 +108,27 @@ module.exports = function(webRouter, privateApiRouter, publicApiRouter) {
         // In production: resolve path from webpack manifest file
         // We are guaranteed to have a manifest file since webpack compiles in
         // the build
-        path = `/${webpackManifest[jsFile]}`
+        path = webpackManifest[jsFile]
       }
 
-      return Url.resolve(staticFilesBase, path)
+      if (opts.cdn !== false) {
+        path = Url.resolve(staticFilesBase, path)
+      }
+
+      if (opts.qs) {
+        path = path + '?' + querystring.stringify(opts.qs)
+      }
+
+      return path
     }
 
-    res.locals.mathJaxPath = `/js/libs/mathjax/MathJax.js?${querystring.stringify(
+    res.locals.mathJaxPath = res.locals.buildCopiedJsAssetPath(
+      'js/libs/mathjax/MathJax.js',
       {
-        config: 'TeX-AMS_HTML,Safe'
+        cdn: false,
+        qs: { config: 'TeX-AMS_HTML,Safe' }
       }
-    )}`
+    )
 
     res.locals.lib = PackageVersions.lib
 
@@ -165,7 +169,7 @@ module.exports = function(webRouter, privateApiRouter, publicApiRouter) {
         // In production: resolve path from webpack manifest file
         // We are guaranteed to have a manifest file since webpack compiles in
         // the build
-        path = `/${webpackManifest[cssFileName]}`
+        path = webpackManifest[cssFileName]
       }
 
       return Url.resolve(staticFilesBase, path)

+ 0 - 3
services/web/app/views/layout.pug

@@ -47,9 +47,6 @@ html(
 
 		script(type="text/javascript").
 			window.csrfToken = "#{csrfToken}";
-			//- Configure dynamically loaded assets (via webpack) to be downloaded from CDN
-			//- See: https://webpack.js.org/guides/public-path/#on-the-fly
-			window.baseAssetPath = "#{buildBaseAssetPath()}"
 
 		script(src=buildCopiedJsAssetPath('js/libs/jquery-1.11.1.min.js'))
 		script(type="text/javascript").

+ 0 - 5
services/web/frontend/js/base.js

@@ -14,11 +14,6 @@
  * DS207: Consider shorter variations of null checks
  * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  */
-
-// Configure dynamically loaded assets (via webpack) to be downloaded from CDN
-// See: https://webpack.js.org/guides/public-path/#on-the-fly
-__webpack_public_path__ = window.baseAssetPath
-
 define([
   'libraries',
   'libs/polyfills/symbol',

+ 3 - 0
services/web/webpack.config.js

@@ -41,6 +41,9 @@ module.exports = {
   output: {
     path: path.join(__dirname, '/public'),
 
+    // Serve from the root of public directory
+    publicPath: '/',
+
     // By default write into js directory
     filename: 'js/[name].js',