您如何确定 Coffeescript 脚本是作为脚本运行还是在模块中需要?

How can you determine if a Coffeescript script is being run as a script vs being required in a module?

我有一个 coffeescript 文件,其中包含我希望其他脚本需要的代码,但我也希望它作为独立脚本运行。

确定其他脚本是否需要它或直接运行它的最可靠方法是什么?

例如 要求("./myScript.coffee") 对比 咖啡./myScript.coffee

我目前的解决方案是在 'standalone script execution'

之前包括这一行逻辑检查
if process.argv[1].toString().indexOf('myScript.coffee') != -1
    # Standalone script code here

这是在节点上吗?如果是,这里有两个选项

A) 使用调用栈

stack = new Error().stack

B) 使用 require.cache

检查您的脚本是否在 require.cache 列表中。例如 here 是一个单元测试,它在当前 require.cache 上找到特定脚本并将其删除

    for file in require.cache.keys()
      if file.contains(['node/server.coffee']) or  file.contains(['node-cov/server.coffee'])
        pathToApp = file
        break

    require.cache[pathToApp].assert_Is_Object()
    delete require.cache[pathToApp]

    app = require '../server'