【问题标题】:npm package and git, how should I handle data filenpm包和git,我应该如何处理数据文件
【发布时间】:2018-03-21 08:57:23
【问题描述】:

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

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

  1. 当用户使用我的包一段时间然后进行版本更新时,较新的版本不应覆盖用户现有的数据。
  2. 在开发过程中,我在这些文件中的测试数据不应提交到 git。

我已经为第二种情况尝试了 .gitignore,但是一旦文件存在于存储库中,似乎 .gitignore 就不起作用了。

我在这里有点困惑。我该如何处理?

【问题讨论】:

    标签: node.js git npm


    【解决方案1】:

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

    假设您的库基于某个顶级类:

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

    如果你的包有 CLI 调用,一个运行时标志可以让你指定位置(如 --data ./ignored/realdata),这样你就可以将你的开发文件放在你的 .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;
      },
      ...
    };
    

    【讨论】:

    • 感谢您的快速回答。但是我该如何处理 npm 的情况呢?
    • 我的意思是,如果我的存储库中有空白数据文件。如何在用户更新软件包时保持用户数据文件不受影响?
    • 同样的交易。一旦用户npm installs 您的库,为他们创建一个新的(未跟踪的)数据目录,复制您的空白,然后从那时起检查该用户目录是否存在。可以?太好了,使用该目录。不是吗?使用默认的“空白”文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多