npm包和git,我应该如何处理数据文件

时间:2018-03-21 00:47:18

标签: node.js git npm

我正在构建一个npm包。在我的包中,我需要一个包含一些json文件的数据文件夹来保存用户数据。

问题是,我确实希望用户在首次安装软件包时有一些空白数据文件。但我不想要:

  1. 当用户使用我的软件包一段时间然后进行版本更新时,较新的版本不应覆盖用户的现有数据。
  2. 在开发过程中,我在这些文件中的测试数据不应该被提交到git中。
  3. 我已经尝试过.gitignore用于第二个场景,但是一旦文件存在于存储库中,它看起来似乎没有.gitignore可以工作。

    我在这里有点困惑。我该怎么处理?

1 个答案:

答案 0 :(得分:1)

这里最简单的解决方案是为您的库提供一个选项对象,用于指定从默认位置读取这些json文件的目录。

假设您的图书馆基于某些顶级课程:

const DEFAULT_DATA_PATH= ...
export default class Library {
  constructor(options={}) {
    this.dataPath = options.dataPath || DEFAULT_DATA_PATH;
  },
  ...
};

如果您的软件包有CLI调用,则可以使用运行时标志来指定位置(例如--data ./ignored/realdata),以便将dev文件放在.gitignore中的目录中并且您只需在npm运行脚本中添加数据目录标记。

const DEFAULT_DATA_PATH = ...
var dataPathOverride = process.argv.indexOf('--data') + 1;
dataPathOverride = dataPathOverride ? process.argv[dataPathOverride] : DEFAULT_DATA_PATH;

export default class Library {
  constructor(options={}) {
    this.dataPath = options.dataPath || dataPathOverride;
  },
  ...
};