node_package 特定设置在客户端计算机上的何处存储?

Where to store a node_package specific settings on the client machine?

我有一个 node_package bookiza(全局安装),POSTS/PATCHes 使用从 .rc 文件中获取的凭据为接收基板赋值。

我目前将 .rc 文件保存在模块本身的 usr/lib/node_modules/bookiza 处,但我可以在任何我喜欢的地方这样做。将其存储在包中的问题是每当用户 npm i -g installs 再次更新包时设置都会被覆盖。

function updateBookizaConfig(res) {

  var bookizaConfig = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '.bookizarc')).toString());

  bookizaConfig.token = res.body.key;
  bookizaConfig.username = res.body.username;
  bookizaConfig.email = res.body.email;

  fs.writeFileSync(path.join(__dirname, '..', '.bookizarc'), JSON.stringify(bookizaConfig, null, 2));

  // Move or copy the config file outside of package to retain credentials upon package update.
  // cp('-R', path.join(__dirname, '..', '.bookizarc'), path.join(__dirname, '..', '..')); 

  console.log(chalk.bold.cyan('Registration successful'));

}

这有效,但请注意 .dotfile 文件保存在 usr/lib/node_modules/ 目录中,作为机器上安装的其他全局包的兄弟。现在我也可以将设置文件放在机器上的任何其他位置,但是 practice/standard 这样做的好方法是什么?

将设置文件放在 usr/lib/node_modules/dots 文件夹中是否更好,将来其他包编写者也可能将他们的 .rc 文件放在该文件夹中?

评论里的网友已经想到了这个方案,不过还是记录一下:

  1. npm 建议您将用户特定的配置数据保存在用户的主目录中,而不是在 npm 的模块目录中,这既是因为持久化这些设置不方便,也是因为它在多线程中存在问题用户环境。

  2. 有很多模块会以跨平台的方式找到用户的主目录,让你把文件放进去;我们喜欢 https://www.npmjs.com/package/osenv