对于当前模块,在运行时获取所有直接导入的模块的列表(Javascript/Typescript)

use*_*840 6 javascript json node.js typescript

假设我们有一些由当前模块导入的模块:

import {A1, A2, A3} from "./ModuleA";
import {B1, B2, B3} from "./ModuleB";
import {C1, C2, C3} from "./ModuleC";

function getTheListOfImportedModules() {
// This should return something similar to ["./ModuleA", "./ModuleB", "./ModuleC"]
}

Run Code Online (Sandbox Code Playgroud)

有没有办法在运行时获取所有导入模块的列表,而无需在编辑期间手动列出每个模块?另一方面,如果这是可能的,那么是否也可以在运行时从这些模块获取导入对象的列表:[A1,A2,A3,B1,B2,B3,C1,C2,C3]?

Sab*_*ati 0

只要node.js涉及到,这就应该有效:

import {useState, useEffect} from 'react';

import CSS from './Popup.module.css';
import Confetti from '../../elements/confetti/Confetti';
import Graphic from '../../elements/graphic/Graphic';
import {arrayShuffle} from '../../../utility/tools';

const moduleNames: string[] = [];
for (const path of module.children as unknown as string[]) {
  // Skipping libraries
  if (!path.includes('node_module')) {
    const moduleName = path
      .split('/')
      .pop()
      ?.match(/(.*).[jt]sx?/i)
      ?.pop();

    if (moduleName) {
      moduleNames.push(moduleName);
    }
  }
}

console.log(moduleNames); // ["Confetti", "Graphic", "tools"]
Run Code Online (Sandbox Code Playgroud)