0

我有一个 node_package bookiza(全局安装),它使用从 .rc 文件中取出的凭据将值发布到接收基板。

我目前将.rc文件保存在模块本身中, at 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/目录中,作为安装在机器上的其他全局包的兄弟。现在我也可以将设置文件放在机器上的其他任何地方,但是这样做的好习惯/标准方法是什么?

将设置文件放在一个usr/lib/node_modules/dots文件夹中对我来说会更好吗?将来其他包编写者也可能会放置他们的 .rc 文件?

4

1 回答 1

1

评论中的用户已经点击了这个解决方案,但无论如何在这里记录一下:

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

  2. 有许多模块可以跨平台的方式找到用户的主目录,以便您将文件放入其中;我们喜欢https://www.npmjs.com/package/osenv

于 2016-02-06T00:14:59.653 回答