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

时间:2016-02-05 20:17:52

标签: node.js npm dotfiles

我'有一个node_package bookiza(全局安装),使用从.rc文件中获取的凭据将POSTS / PATCH值传递给接收基板。

我目前正在.rc内部将usr/lib/node_modules/bookiza文件保存在模块内部,但我可以随时随地保存。{I}}将其存储在包中的问题是,只要用户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文件会更好吗?

1 个答案:

答案 0 :(得分:1)

评论中的用户已经找到了这个解决方案,但无论如何都在这里进行记录:

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

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