如何检测 ES 模块是否是主模块?

Die*_*Epp 13 javascript node.js es6-modules

如何检测 ECMAScript 模块是否为主模块?这对于 CommonJS 模块来说很容易(请参阅检测是否通过 require 调用或直接通过命令行调用)。

  • 没有requirerequire.main

  • process.mainModule

  • 没有任何线索import.meta,只有url

Tak*_*tes 8

你可以使用es-main.

从包自述文件中:

import esMain from 'es-main';
 
if (esMain(import.meta)) {
  // Module run directly.
}
Run Code Online (Sandbox Code Playgroud)

注意:该模块只能在 Node.JS 环境中工作,因为模块代码使用本机 Node.JS 模块。