mirror of
https://github.com/strapi/strapi.git
synced 2025-07-25 18:05:07 +00:00
93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
'use strict';
|
|
|
|
const { join, resolve, relative } = require('path');
|
|
const { camelCase } = require('lodash');
|
|
const fs = require('fs-extra');
|
|
|
|
const CORE_PLUGINS = ['content-type-builder', 'email', 'upload'];
|
|
|
|
/**
|
|
* Retrieve the core plugins path
|
|
* @returns {Object}
|
|
*/
|
|
const getCorePluginsPath = () => {
|
|
const corePlugins = {};
|
|
|
|
for (const dep of CORE_PLUGINS) {
|
|
const packageAdminPath = join(__dirname, '..', '..', dep, 'admin', 'src');
|
|
|
|
const adminEntryPoint = resolve(join(__dirname, '..', 'admin', 'src'));
|
|
const pathToPlugin = join(relative(adminEntryPoint, packageAdminPath)).replace(/\\/g, '/');
|
|
|
|
corePlugins[dep] = pathToPlugin;
|
|
}
|
|
|
|
return corePlugins;
|
|
};
|
|
|
|
/**
|
|
* Retrieve the plugins real path
|
|
* @param {Object[]} pluginsToInstall array of plugins located in the plugins folder
|
|
* @returns Object of plugin's paths
|
|
*/
|
|
const getPluginToInstallPath = (pluginsToInstall) => {
|
|
const plugins = {};
|
|
|
|
for (const dep of pluginsToInstall) {
|
|
const packageAdminPath = join(__dirname, '..', '..', '..', 'plugins', dep, 'admin', 'src');
|
|
|
|
const adminEntryPoint = resolve(join(__dirname, '..', 'admin', 'src'));
|
|
const pathToPlugin = join(relative(adminEntryPoint, packageAdminPath)).replace(/\\/g, '/');
|
|
|
|
plugins[dep] = pathToPlugin;
|
|
}
|
|
|
|
return plugins;
|
|
};
|
|
|
|
/**
|
|
* Write the plugins.js file
|
|
* @param {Object} plugins
|
|
*/
|
|
const createPluginsFile = async (plugins) => {
|
|
const pluginFileDest = resolve(__dirname, '..', 'admin', 'src', 'plugins.js');
|
|
|
|
const allPluginsArray = Object.entries(plugins).map(([plugin, pluginPath]) => {
|
|
return {
|
|
shortName: camelCase(plugin),
|
|
name: plugin,
|
|
pluginPath,
|
|
};
|
|
});
|
|
|
|
const content = `
|
|
// To override this file create a plugins-dev.js one and copy the content of the plugin.js one.
|
|
// When starting the app the script will copy the plugins-dev.js into this one instead.
|
|
${allPluginsArray
|
|
.map(({ shortName, pluginPath }) => {
|
|
const req = `'${pluginPath}'`;
|
|
|
|
return `import ${shortName} from ${req};`;
|
|
})
|
|
.join('\n')}
|
|
|
|
const plugins = {
|
|
${[...allPluginsArray]
|
|
.map(({ name, shortName }) => {
|
|
return ` '${name}': ${shortName},`;
|
|
})
|
|
.join('\n')}
|
|
};
|
|
|
|
export default plugins;
|
|
`;
|
|
|
|
return fs.writeFile(pluginFileDest, content);
|
|
};
|
|
|
|
module.exports = {
|
|
createPluginsFile,
|
|
getCorePluginsPath,
|
|
getPluginToInstallPath,
|
|
};
|