您如何确定 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'
我有一个 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'