hexo-theme-amane/layout/common/plugins.jsx

30 lines
1.1 KiB
JavaScript

const createLogger = require('hexo-log');
const { Component, Fragment } = require('inferno');
const view = require('hexo-component-inferno/lib/core/view');
const logger = typeof createLogger === "function" ? createLogger() : createLogger.default();
module.exports = class extends Component {
render() {
const { site, config, page, helper, head } = this.props;
const { plugins = [] } = config;
return <Fragment>
{Object.keys(plugins).map(name => {
// plugin is not enabled
if (!plugins[name]) {
return null;
}
try {
let Plugin = view.require('plugin/' + name);
Plugin = Plugin.Cacheable ? Plugin.Cacheable : Plugin;
return <Plugin site={site} config={config} page={page} helper={helper} plugin={plugins[name]} head={head} />;
} catch (e) {
logger.w(`Icarus cannot load plugin "${name}"`);
return null;
}
})}
</Fragment>;
}
};