如何确定Coffeescript脚本是作为脚本运行而不是模块中需要?

时间:2015-01-06 17:34:32

标签: javascript process coffeescript

我有一个coffeescript文件,其中包含我希望其他脚本可以使用的代码,但我也希望它能够作为一个独立的脚本运行。

确定另一个脚本是否需要它直接运行的最可靠方法是什么?

e.g。 要求( “./ myScript.coffee”) VS 咖啡./myScript.coffee

2 个答案:

答案 0 :(得分:1)

这是节点吗?如果有的话这里有两个选项

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'

答案 1 :(得分:0)

我目前的解决方案是在“独立脚本执行”之前包含此行逻辑检查

if process.argv[1].toString().indexOf('myScript.coffee') != -1
    # Standalone script code here