Plugins: support .cjs module extension

This commit is contained in:
Cohee
2024-10-11 23:00:37 +03:00
parent fa84b3ede4
commit ffa8716d07

View File

@ -17,7 +17,7 @@ const loadedPlugins = new Map();
* @param {string} file Path to file * @param {string} file Path to file
* @returns {boolean} True if file is a CommonJS module * @returns {boolean} True if file is a CommonJS module
*/ */
const isCommonJS = (file) => path.extname(file) === '.js'; const isCommonJS = (file) => path.extname(file) === '.js' || path.extname(file) === '.cjs';
/** /**
* Determine if a file is an ECMAScript module. * Determine if a file is an ECMAScript module.
@ -35,7 +35,7 @@ const isESModule = (file) => path.extname(file) === '.mjs';
*/ */
export async function loadPlugins(app, pluginsPath) { export async function loadPlugins(app, pluginsPath) {
const exitHooks = []; const exitHooks = [];
const emptyFn = () => {}; const emptyFn = () => { };
// Server plugins are disabled. // Server plugins are disabled.
if (!enableServerPlugins) { if (!enableServerPlugins) {
@ -90,19 +90,15 @@ async function loadFromDirectory(app, pluginDirectoryPath, exitHooks) {
} }
} }
// Plugin is a CommonJS module. // Plugin is a module file.
const cjsFilePath = path.join(pluginDirectoryPath, 'index.js'); const fileTypes = ['index.js', 'index.cjs', 'index.mjs'];
if (fs.existsSync(cjsFilePath)) {
if (await loadFromFile(app, cjsFilePath, exitHooks)) {
return;
}
}
// Plugin is an ECMAScript module. for (const fileType of fileTypes) {
const esmFilePath = path.join(pluginDirectoryPath, 'index.mjs'); const filePath = path.join(pluginDirectoryPath, fileType);
if (fs.existsSync(esmFilePath)) { if (fs.existsSync(filePath)) {
if (await loadFromFile(app, esmFilePath, exitHooks)) { if (await loadFromFile(app, filePath, exitHooks)) {
return; return;
}
} }
} }
} }