diff --git a/packages/strapi/lib/configuration/hooks/core/router/index.js b/packages/strapi/lib/configuration/hooks/core/router/index.js index 83cae444f1..8eeea89a34 100644 --- a/packages/strapi/lib/configuration/hooks/core/router/index.js +++ b/packages/strapi/lib/configuration/hooks/core/router/index.js @@ -105,7 +105,7 @@ module.exports = strapi => { // Parse each route from the user config, load policies if any // and match the controller and action to the desired endpoint. - _.forEach(_.omit(strapi.config.routes, 'plugins'), (value, endpoint) => { + _.forEach(strapi.config.routes, (value, endpoint) => { try { const { route, policies, action } = routerChecker(value, endpoint); @@ -116,7 +116,7 @@ module.exports = strapi => { }); // Parse each plugin's routes. - _.forEach(strapi.config.routes.plugins, (value, plugin) => { + _.forEach(strapi.config.plugins.routes, (value, plugin) => { try { // Create router for each plugin. // Prefix router with the plugin's name. diff --git a/packages/strapi/lib/configuration/hooks/core/static/index.js b/packages/strapi/lib/configuration/hooks/core/static/index.js index 11cec36fff..9d897c1328 100644 --- a/packages/strapi/lib/configuration/hooks/core/static/index.js +++ b/packages/strapi/lib/configuration/hooks/core/static/index.js @@ -7,6 +7,9 @@ // Node.js core. const path = require('path'); +// Public modules +const koa = require('koa'); + /** * Public assets hook */ @@ -28,9 +31,23 @@ module.exports = strapi => { initialize: cb => { if (strapi.config.static === true) { - strapi.app.use(strapi.middlewares.static(path.resolve(strapi.config.appPath, strapi.config.paths.static))); + strapi.app.use(strapi.middlewares.static(path.resolve(strapi.config.appPath, strapi.config.paths.static), { + gzip: true + })); } + // Mount static to a specific path (pattern: `/plugins/xXx`) + _.forEach(strapi.plugins, (value, plugin) => { + // Create koa sub-app + const app = koa(); + + app.use(strapi.middlewares.static(path.resolve(strapi.config.appPath, 'plugins', plugin, strapi.config.paths.static), { + gzip: true + })); + + strapi.app.use(strapi.middlewares.mount(path.join('/plugins', plugin), app)); + }); + cb(); } }; diff --git a/packages/strapi/lib/configuration/hooks/dictionary/_plugins/index.js b/packages/strapi/lib/configuration/hooks/dictionary/_plugins/index.js index 6d3e3dfa02..d6a2c74299 100644 --- a/packages/strapi/lib/configuration/hooks/dictionary/_plugins/index.js +++ b/packages/strapi/lib/configuration/hooks/dictionary/_plugins/index.js @@ -136,7 +136,7 @@ module.exports = strapi => { strapi.plugins[plugin.name] = _.omitBy(_.get(strapi.plugins, plugin.name), _.isEmpty); // Merge API routes with the main ones. - _.set(strapi.config.routes, 'plugins.' + plugin.name, _.get(strapi.plugins, plugin.name + '.config.routes')); + _.set(strapi.config, 'plugins.routes.' + plugin.name, _.get(strapi.plugins, plugin.name + '.config.routes')); // If the module doesn't have a definition at all // just remove it completely from the dictionary. diff --git a/packages/strapi/package.json b/packages/strapi/package.json index 3eb6b57566..fcd9069896 100644 --- a/packages/strapi/package.json +++ b/packages/strapi/package.json @@ -54,6 +54,7 @@ "koa-load-middlewares": "~1.0.0", "koa-locale": "~1.2.0", "koa-lusca": "~2.2.0", + "koa-mount": "^1.3.0", "koa-proxy": "~0.6.0", "koa-response-time": "~1.0.2", "koa-router": "~5.4.0",