我在 Node.js 中编写了一个 CLI,您可以使用 npm 进行全局安装。现在我想在用户第一次运行我的 CLI 时运行一段特定的代码。但它应该只运行一次。
我的问题是:如何检测到 CLI 是第一次运行?
当然,我可以将文件写入用户的主目录,如果存在,则跳过代码执行。这将非常简单。
但现在事情变得稍微复杂一些:我希望在用户将 CLI 更新到新版本时重新运行此检查。因此,我可以再次将文件写入用户的主目录,并将版本存储在其中,为此我运行了“一次”代码块。
但这又意味着每次用户运行 CLI 时,它都必须打开文件、解析文件、查找版本等等。我担心这会对启动性能产生负面影响。
有没有更好的办法解决这个问题?
最佳答案
我有一个愚蠢的想法,将其视为 hacky 元编程的学术示例。创建一个名为 script.js
的脚本:
var fs = require('fs');
if(!process.env.firstRun){
var content = fs.readFileSync("script.js", "utf8");
fs.writeFileSync('script.js', 'process.env.firstRun=true;\r\n' + content, 'utf8');
console.log('first run');
} else {
console.log('next run');
}
如果未设置,脚本会通过在开头添加额外的标志声明来简单地覆盖自身。否则它会走另一条路:
λ node .\script.js
first run
λ node .\script.js
next run
λ node .\script.js
next run
以上纯属娱乐。对于生产代码,您应该按照您的建议使用配置文件。根据this method,读取单个小文件没什么大不了的在我的设置(I5 处理器、SSD 驱动器)中花费 <0.5 毫秒,所以这绝对是一个可行的方法。
关于javascript - 为基于 Node.js 的 CLI 的单个版本运行一次代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613022/