npm 缓存清理中 -f(强制?)参数的行为是什么?

What is the behavior of -f (force?) argument in npm cache clean?

我在网上搜索过,但找不到我的问题的答案。怎么样:

npm cache clean -f

不同于:

npm cache clean

我怀疑 -f 对于 --force 是 shorthand,但即使在官方文档中我也无法找到为什么要使用 -f,有什么好处它的缺点是什么。我确定使用-f时会有警告,但我不知道为什么。

看看 npm cache clean 源代码:

// npm cache clean [<path>]
function clean (args, cb) {
  assert(typeof cb === 'function', 'must include callback')

  if (!args) args = []

  var f = path.join(npm.cache, normalize(args))
  if (f === npm.cache) {
    fs.readdir(npm.cache, function (er, files) {
      if (er) return cb()
      asyncMap(
        files.filter(function (f) {
          return npm.config.get('force') || f !== '-'
        }).map(function (f) {
          return path.join(npm.cache, f)
        }),
        rm,
        cb
      )
    })
  } else {
    rm(f, cb)
  }
}

Link转源码:https://github.com/npm/npm/blob/master/lib/cache.js#L199

它看起来像默认缓存清理命令浏览默认 npm 缓存目录并删除除名为 - 的文件之外的所有文件。默认情况下跳过此文件,只有在强制选项中才会删除。

问题是破折号作为文件名有什么用?我在这个 question 中找到了可能的答案。根据已接受答案中提供的信息,某些程序使用 - 文件作为标准标准输出。

总结一下。标准 npm cache clean 删除除 - 文件之外的所有缓存文件,该文件有时用于存储标准输出内容。但是 npm cache clean -fnpm cache clean --force 会删除所有文件。