我用Node.js编写了一个CLI,您可以使用npm进行全局安装。现在,我想在用户第一次运行我的CLI时运行一段特定的代码。但应该只运行一次。
我的问题是:如何才能检测到CLI是第一次运行?
当然,我可以将文件写入用户的主目录,如果存在,则跳过代码执行。这会很简单。
但现在情况变得更加复杂:当用户将CLI更新为新版本时,我希望重新运行此检查。因此,我可以再次将文件写入用户的主目录,并将版本存储在其中,为此我运行了“一次性”-code块。
但这再次意味着,每当用户运行CLI时,它都必须打开文件,解析文件,查找版本,等等。我担心这会对创业绩效产生负面影响。
有更好的办法解决这个问题吗?
发布于 2018-05-30 21:46:52
我有个愚蠢的想法,把它当作一个黑客元编程的学术例子。创建一个名为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,在我的设置中需要<0.5ms (I5处理器,SSD驱动器),所以这绝对是一种方法。
https://stackoverflow.com/questions/50613022
复制相似问题