mirror of
https://github.com/strapi/strapi.git
synced 2025-11-11 15:49:50 +00:00
Avoid to rebuild on path change and override build configuration
This commit is contained in:
parent
d67c64a82a
commit
d0c3f7f8b5
@ -4,6 +4,17 @@
|
|||||||
* This is the entry file for the application, only setup and boilerplate
|
* This is the entry file for the application, only setup and boilerplate
|
||||||
* code.
|
* code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable */
|
||||||
|
// Retrieve remote and backend URLs.
|
||||||
|
const remoteURL = process.env.REMOTE_URL || 'http://localhost:1337/admin';
|
||||||
|
const backendURL = process.env.BACKEND_URL || 'http://localhost:1337';
|
||||||
|
|
||||||
|
// Retrieve development URL to avoid to re-build.
|
||||||
|
const devFrontURL = document.getElementsByTagName('body')[0].getAttribute('front');
|
||||||
|
const devBackendURL = document.getElementsByTagName('body')[0].getAttribute('back');
|
||||||
|
|
||||||
|
import './public-path';
|
||||||
import 'babel-polyfill';
|
import 'babel-polyfill';
|
||||||
|
|
||||||
// Import all the third party stuff
|
// Import all the third party stuff
|
||||||
@ -24,15 +35,12 @@ import { pluginLoaded, updatePlugin } from 'containers/App/actions';
|
|||||||
|
|
||||||
import configureStore from './store';
|
import configureStore from './store';
|
||||||
import { translationMessages, languages } from './i18n';
|
import { translationMessages, languages } from './i18n';
|
||||||
|
/* eslint-enable */
|
||||||
// Retrieve remote and backend URLs.
|
|
||||||
const remoteURL = process.env.REMOTE_URL || 'http://localhost:1337/admin';
|
|
||||||
const backendURL = process.env.BACKEND_URL || 'http://localhost:1337';
|
|
||||||
|
|
||||||
// Create redux store with history
|
// Create redux store with history
|
||||||
const initialState = {};
|
const initialState = {};
|
||||||
const history = createHistory({
|
const history = createHistory({
|
||||||
basename: remoteURL.replace(window.location.origin, ''),
|
basename: (devFrontURL || remoteURL).replace(window.location.origin, ''),
|
||||||
});
|
});
|
||||||
const store = configureStore(initialState, history);
|
const store = configureStore(initialState, history);
|
||||||
|
|
||||||
@ -49,7 +57,6 @@ const render = (translatedMessages) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Hot reloadable translation json files
|
// Hot reloadable translation json files
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
// modules.hot.accept does not accept dynamic dependencies,
|
// modules.hot.accept does not accept dynamic dependencies,
|
||||||
@ -74,7 +81,7 @@ window.onload = function onLoad() {
|
|||||||
|
|
||||||
// Don't inject plugins in development mode.
|
// Don't inject plugins in development mode.
|
||||||
if (window.location.port !== '4000') {
|
if (window.location.port !== '4000') {
|
||||||
fetch(`${remoteURL}/config/plugins.json`)
|
fetch(`${devFrontURL || remoteURL}/config/plugins.json`)
|
||||||
.then(response => {
|
.then(response => {
|
||||||
return response.json();
|
return response.json();
|
||||||
})
|
})
|
||||||
@ -140,9 +147,9 @@ const displayNotification = (message, status) => {
|
|||||||
store.dispatch(showNotification(message, status));
|
store.dispatch(showNotification(message, status));
|
||||||
};
|
};
|
||||||
|
|
||||||
window.strapi = {
|
window.strapi = Object.assign(window.strapi || {}, {
|
||||||
remoteURL,
|
remoteURL: devFrontURL || remoteURL,
|
||||||
backendURL,
|
backendURL: devBackendURL || backendURL,
|
||||||
registerPlugin,
|
registerPlugin,
|
||||||
notification: {
|
notification: {
|
||||||
success: (message) => {
|
success: (message) => {
|
||||||
@ -168,7 +175,7 @@ window.strapi = {
|
|||||||
}),
|
}),
|
||||||
router: history,
|
router: history,
|
||||||
languages,
|
languages,
|
||||||
};
|
});
|
||||||
|
|
||||||
const dispatch = store.dispatch;
|
const dispatch = store.dispatch;
|
||||||
export {
|
export {
|
||||||
|
|||||||
5
packages/strapi-admin/admin/src/public-path.js
Normal file
5
packages/strapi-admin/admin/src/public-path.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// Retrieve URLs.
|
||||||
|
const remoteURL = process.env.REMOTE_URL || 'http://localhost:1337/admin';
|
||||||
|
const devURL = document.getElementsByTagName('body')[0].getAttribute('front');
|
||||||
|
|
||||||
|
__webpack_public_path__ = `${(devURL || remoteURL).replace(window.location.origin, '')}/`;
|
||||||
@ -30,6 +30,7 @@ module.exports = scope => {
|
|||||||
'preanalyze': 'npm run analyze:clean',
|
'preanalyze': 'npm run analyze:clean',
|
||||||
'analyze': 'node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js',
|
'analyze': 'node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js',
|
||||||
'prebuild': 'npm run build:clean && npm run test',
|
'prebuild': 'npm run build:clean && npm run test',
|
||||||
|
'build:dev': 'cross-env NODE_ENV=development webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress',
|
||||||
'build': 'cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress',
|
'build': 'cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress',
|
||||||
'build:clean': 'rimraf admin/build',
|
'build:clean': 'rimraf admin/build',
|
||||||
'start': 'cross-env NODE_ENV=development node node_modules/strapi-helper-plugin/lib/server',
|
'start': 'cross-env NODE_ENV=development node node_modules/strapi-helper-plugin/lib/server',
|
||||||
|
|||||||
@ -11,7 +11,7 @@ const pkg = require(path.resolve(process.cwd(), 'package.json'));
|
|||||||
const pluginId = pkg.name.replace(/^strapi-/i, '');
|
const pluginId = pkg.name.replace(/^strapi-/i, '');
|
||||||
const isAdmin = process.env.IS_ADMIN === 'true';
|
const isAdmin = process.env.IS_ADMIN === 'true';
|
||||||
|
|
||||||
const appPath = isAdmin ? path.resolve(process.env.PWD, '..'): path.resolve(process.env.PWD, '..', '..');
|
const appPath = isAdmin ? path.resolve(process.env.PWD, '..') : path.resolve(process.env.PWD, '..', '..');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Load app' configurations to update `plugins.json` automatically.
|
// Load app' configurations to update `plugins.json` automatically.
|
||||||
@ -24,6 +24,7 @@ try {
|
|||||||
await strapi.load();
|
await strapi.load();
|
||||||
})();
|
})();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
throw new Error(`You need to start the WebPack server from the /admin or /plugins/**/admin directories in a Strapi's project.`);
|
throw new Error(`You need to start the WebPack server from the /admin or /plugins/**/admin directories in a Strapi's project.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,8 +80,7 @@ if (process.env.npm_lifecycle_event === 'start') {
|
|||||||
module.exports = (options) => ({
|
module.exports = (options) => ({
|
||||||
entry: options.entry,
|
entry: options.entry,
|
||||||
output: Object.assign({ // Compile into js/build.js
|
output: Object.assign({ // Compile into js/build.js
|
||||||
path: path.join(process.cwd(), 'admin', 'build'),
|
path: path.join(process.cwd(), 'admin', 'build')
|
||||||
publicPath: '/',
|
|
||||||
}, options.output), // Merge with env dependent settings
|
}, options.output), // Merge with env dependent settings
|
||||||
module: {
|
module: {
|
||||||
loaders: [{
|
loaders: [{
|
||||||
|
|||||||
@ -119,14 +119,13 @@ const publicPath = (() => {
|
|||||||
module.exports = require('./webpack.base.babel')({
|
module.exports = require('./webpack.base.babel')({
|
||||||
// In production, we skip all hot-reloading stuff
|
// In production, we skip all hot-reloading stuff
|
||||||
entry: {
|
entry: {
|
||||||
main: appPath
|
main: appPath,
|
||||||
},
|
},
|
||||||
|
|
||||||
// Utilize long-term caching by adding content hashes (not compilation hashes) to compiled assets
|
// Utilize long-term caching by adding content hashes (not compilation hashes) to compiled assets
|
||||||
output: {
|
output: {
|
||||||
filename: '[name].js',
|
filename: '[name].js',
|
||||||
chunkFilename: '[name].[chunkhash].chunk.js',
|
chunkFilename: '[name].[chunkhash].chunk.js'
|
||||||
publicPath,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// In production, we minify our CSS with cssnano
|
// In production, we minify our CSS with cssnano
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
* This is the entry file for the application,
|
* This is the entry file for the application,
|
||||||
* only setup and plugin code.
|
* only setup and plugin code.
|
||||||
*/
|
*/
|
||||||
|
import './public-path.js'; // eslint-disabled-line
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
|
|||||||
5
packages/strapi-helper-plugin/lib/src/public-path.js
Normal file
5
packages/strapi-helper-plugin/lib/src/public-path.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
const pluginPkg = require('../../../../package.json');
|
||||||
|
const pluginId = pluginPkg.name.replace(/^strapi-plugin-/i, '');
|
||||||
|
const publicPath = `plugins/${pluginId}/`;
|
||||||
|
|
||||||
|
__webpack_public_path__ = `${(strapi.remoteURL).replace(window.location.origin, '')}/${publicPath}`;
|
||||||
@ -33,6 +33,7 @@
|
|||||||
"preanalyze": "npm run analyze:clean",
|
"preanalyze": "npm run analyze:clean",
|
||||||
"analyze": "node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js",
|
"analyze": "node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js",
|
||||||
"prebuild": "npm run build:clean && npm run test",
|
"prebuild": "npm run build:clean && npm run test",
|
||||||
|
"build:dev": "cross-env NODE_ENV=development webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
||||||
"build": "cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
"build": "cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
||||||
"build:clean": "rimraf admin/build",
|
"build:clean": "rimraf admin/build",
|
||||||
"start": "cross-env NODE_ENV=development PLUGIN=true node node_modules/strapi-helper-plugin/lib/server",
|
"start": "cross-env NODE_ENV=development PLUGIN=true node node_modules/strapi-helper-plugin/lib/server",
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
"preanalyze": "npm run analyze:clean",
|
"preanalyze": "npm run analyze:clean",
|
||||||
"analyze": "node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js",
|
"analyze": "node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js",
|
||||||
"prebuild": "npm run build:clean && npm run test",
|
"prebuild": "npm run build:clean && npm run test",
|
||||||
|
"build:dev": "cross-env NODE_ENV=development webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
||||||
"build": "cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
"build": "cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
||||||
"build:clean": "rimraf admin/build",
|
"build:clean": "rimraf admin/build",
|
||||||
"start": "cross-env NODE_ENV=development node node_modules/strapi-helper-plugin/lib/server",
|
"start": "cross-env NODE_ENV=development node node_modules/strapi-helper-plugin/lib/server",
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
"preanalyze": "npm run analyze:clean",
|
"preanalyze": "npm run analyze:clean",
|
||||||
"analyze": "node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js",
|
"analyze": "node node_modules/strapi-helper-plugin/lib/internals/scripts/analyze.js",
|
||||||
"prebuild": "npm run build:clean && npm run test",
|
"prebuild": "npm run build:clean && npm run test",
|
||||||
|
"build:dev": "cross-env NODE_ENV=development webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
||||||
"build": "cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
"build": "cross-env NODE_ENV=production webpack --config node_modules/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js --color -p --progress",
|
||||||
"build:clean": "rimraf admin/build",
|
"build:clean": "rimraf admin/build",
|
||||||
"start": "cross-env NODE_ENV=development node node_modules/strapi-helper-plugin/lib/server",
|
"start": "cross-env NODE_ENV=development node node_modules/strapi-helper-plugin/lib/server",
|
||||||
|
|||||||
@ -62,7 +62,14 @@ module.exports = function() {
|
|||||||
const setFilesToWatch = (src) => {
|
const setFilesToWatch = (src) => {
|
||||||
var files = fs.readdirSync(src);
|
var files = fs.readdirSync(src);
|
||||||
_.forEach(files, file => {
|
_.forEach(files, file => {
|
||||||
if (_.startsWith(file, '.') || file === 'node_modules' || file === 'plugins.json') return;
|
if (
|
||||||
|
_.startsWith(file, '.') ||
|
||||||
|
file === 'node_modules' ||
|
||||||
|
file === 'plugins.json' ||
|
||||||
|
file === 'index.html'
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const filePath = `${src}/${file}`;
|
const filePath = `${src}/${file}`;
|
||||||
if (fs.statSync(filePath).isDirectory()) setFilesToWatch(filePath);
|
if (fs.statSync(filePath).isDirectory()) setFilesToWatch(filePath);
|
||||||
|
|||||||
@ -8,7 +8,7 @@ const path = require('path');
|
|||||||
const cluster = require('cluster');
|
const cluster = require('cluster');
|
||||||
const { includes, get, assign } = require('lodash');
|
const { includes, get, assign } = require('lodash');
|
||||||
const { logger, models } = require('strapi-utils');
|
const { logger, models } = require('strapi-utils');
|
||||||
const { nestedConfigurations, appConfigurations, apis, middlewares, hooks, plugins } = require('./core');
|
const { nestedConfigurations, appConfigurations, apis, middlewares, hooks, plugins, admin } = require('./core');
|
||||||
const initializeMiddlewares = require('./middlewares');
|
const initializeMiddlewares = require('./middlewares');
|
||||||
const initializeHooks = require('./hooks');
|
const initializeHooks = require('./hooks');
|
||||||
const { EventEmitter } = require('events');
|
const { EventEmitter } = require('events');
|
||||||
@ -95,6 +95,8 @@ class Strapi extends EventEmitter {
|
|||||||
await this.bootstrap();
|
await this.bootstrap();
|
||||||
// Freeze object.
|
// Freeze object.
|
||||||
await this.freeze();
|
await this.freeze();
|
||||||
|
// Update source admin.
|
||||||
|
await admin.call(this);
|
||||||
// Launch server.
|
// Launch server.
|
||||||
this.server.listen(this.config.port, err => {
|
this.server.listen(this.config.port, err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
63
packages/strapi/lib/core/admin.js
Normal file
63
packages/strapi/lib/core/admin.js
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Dependencies.
|
||||||
|
const _ = require('lodash');
|
||||||
|
const path = require('path');
|
||||||
|
const fs = require('fs');
|
||||||
|
const cheerio = require('cheerio')
|
||||||
|
|
||||||
|
module.exports = function() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
|
if (this.config.environment === 'test') {
|
||||||
|
return resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
const sourcePath = path.resolve(this.config.appPath, 'admin', 'admin', 'build', 'index.html');
|
||||||
|
|
||||||
|
fs.access(path.resolve(this.config.appPath, 'admin', 'admin'), err => {
|
||||||
|
if (err && err.code !== 'ENOENT') {
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
// No admin.
|
||||||
|
if (err && err.code === 'ENOENT') {
|
||||||
|
return resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to access to path.
|
||||||
|
fs.access(sourcePath, err => {
|
||||||
|
if (err) {
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.readFile(sourcePath, (err, html) => {
|
||||||
|
const $ = cheerio.load(html.toString());
|
||||||
|
|
||||||
|
$('script').each(function(i, elem) {
|
||||||
|
if ($(this).attr('src')) {
|
||||||
|
const parse = path.parse($(this).attr('src'));
|
||||||
|
|
||||||
|
$(this).attr('src', `${_.get(strapi.config.currentEnvironment.server, 'admin.path', '/admin')}/${parse.base}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Remove previous
|
||||||
|
$('body').attr('front', `http://${strapi.config.currentEnvironment.server.host}:${strapi.config.currentEnvironment.server.port}${_.get(strapi.config.currentEnvironment.server, 'admin.path', '/admin')}`);
|
||||||
|
$('body').attr('back', `http://${strapi.config.currentEnvironment.server.host}:${strapi.config.currentEnvironment.server.port}`);
|
||||||
|
|
||||||
|
fs.writeFile(sourcePath, $.html(), (err) => {
|
||||||
|
if (err) {
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
@ -5,6 +5,7 @@ const apis = require('./apis');
|
|||||||
const middlewares = require('./middlewares');
|
const middlewares = require('./middlewares');
|
||||||
const hooks = require('./hooks');
|
const hooks = require('./hooks');
|
||||||
const plugins = require('./plugins');
|
const plugins = require('./plugins');
|
||||||
|
const admin = require('./admin');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
nestedConfigurations: nested,
|
nestedConfigurations: nested,
|
||||||
@ -12,5 +13,6 @@ module.exports = {
|
|||||||
apis,
|
apis,
|
||||||
middlewares,
|
middlewares,
|
||||||
hooks,
|
hooks,
|
||||||
plugins
|
plugins,
|
||||||
|
admin
|
||||||
};
|
};
|
||||||
|
|||||||
@ -6,7 +6,7 @@ const { parallel } = require('async');
|
|||||||
const { after, includes, indexOf, drop, dropRight, uniq, defaultsDeep, get, set, isEmpty, isUndefined, union, merge } = require('lodash');
|
const { after, includes, indexOf, drop, dropRight, uniq, defaultsDeep, get, set, isEmpty, isUndefined, union, merge } = require('lodash');
|
||||||
|
|
||||||
module.exports = function() {
|
module.exports = function() {
|
||||||
const accepted = Object.keys(this.plugins).map(url => `^\/${url}/`).concat(['^\/admin/']);
|
const accepted = Object.keys(this.plugins).map(url => `^\/${url}/`).concat([`^${get(this.config.currentEnvironment.server, 'admin.path', '/admin')}/`]);
|
||||||
|
|
||||||
// Set if is admin destination for middleware application.
|
// Set if is admin destination for middleware application.
|
||||||
// TODO: Use dynamic config for admin url.
|
// TODO: Use dynamic config for admin url.
|
||||||
|
|||||||
@ -110,6 +110,27 @@ module.exports = strapi => {
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Allow page refresh
|
||||||
|
strapi.router.route({
|
||||||
|
method: 'GET',
|
||||||
|
path: `${basename}/plugins/*`,
|
||||||
|
handler: [
|
||||||
|
async (ctx, next) => {
|
||||||
|
const parse = path.parse(ctx.url);
|
||||||
|
|
||||||
|
if (parse.ext === '') {
|
||||||
|
ctx.url = 'index.html';
|
||||||
|
}
|
||||||
|
|
||||||
|
await next();
|
||||||
|
},
|
||||||
|
strapi.koaMiddlewares.static(`./admin/admin/build`, {
|
||||||
|
maxage: strapi.config.middleware.settings.public.maxAge,
|
||||||
|
defer: true
|
||||||
|
})
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
// Serve plugins assets.
|
// Serve plugins assets.
|
||||||
strapi.router.route({
|
strapi.router.route({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
@ -132,23 +153,6 @@ module.exports = strapi => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Allow page refresh
|
|
||||||
strapi.router.route({
|
|
||||||
method: 'GET',
|
|
||||||
path: `${basename}/plugins/*`,
|
|
||||||
handler: [
|
|
||||||
async (ctx, next) => {
|
|
||||||
ctx.url = 'index.html';
|
|
||||||
|
|
||||||
await next();
|
|
||||||
},
|
|
||||||
strapi.koaMiddlewares.static(`./admin/admin/build`, {
|
|
||||||
maxage: strapi.config.middleware.settings.public.maxAge,
|
|
||||||
defer: true
|
|
||||||
})
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// Plugins.
|
// Plugins.
|
||||||
_.forEach(strapi.plugins, (value, plugin) => {
|
_.forEach(strapi.plugins, (value, plugin) => {
|
||||||
strapi.router.route({
|
strapi.router.route({
|
||||||
@ -173,6 +177,29 @@ module.exports = strapi => {
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
strapi.router.route({
|
||||||
|
method: 'GET',
|
||||||
|
path: `${basename}/plugins/${plugin}/*.*`,
|
||||||
|
handler: [
|
||||||
|
async (ctx, next) => {
|
||||||
|
ctx.url = path.basename(ctx.url);
|
||||||
|
|
||||||
|
// Try to find assets into the build first.
|
||||||
|
return await strapi.koaMiddlewares.static(`./plugins/${plugin}/admin/build`, {
|
||||||
|
maxage: strapi.config.middleware.settings.public.maxAge,
|
||||||
|
defer: true
|
||||||
|
})(ctx, next);
|
||||||
|
},
|
||||||
|
async (ctx, next) => {
|
||||||
|
// Try to find assets in the source then.
|
||||||
|
return await strapi.koaMiddlewares.static(`./plugins/${plugin}/${strapi.config.middleware.settings.public.path || strapi.config.paths.static}`, {
|
||||||
|
maxage: strapi.config.middleware.settings.public.maxAge,
|
||||||
|
defer: true
|
||||||
|
})(ctx, next);
|
||||||
|
},
|
||||||
|
]
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
cb();
|
cb();
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"async": "^2.1.2",
|
"async": "^2.1.2",
|
||||||
"boom": "^5.2.0",
|
"boom": "^5.2.0",
|
||||||
|
"cheerio": "^1.0.0-rc.2",
|
||||||
"delegates": "^1.0.0",
|
"delegates": "^1.0.0",
|
||||||
"glob": "^7.1.2",
|
"glob": "^7.1.2",
|
||||||
"kcors": "^2.2.0",
|
"kcors": "^2.2.0",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user