分叉流星包

时间:2014-10-25 15:58:12

标签: meteor

我发现自己需要分叉spraprable包,但我很难找到有关如何使用最新版本的Meteor(0.9.4)的任何好资源。任何人都可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我已经完成了 - 将http包分成了http-more(不幸的是因为Meteor团队repeatedly refused实施了我提交的一个简单补丁,可以指定代理)。

查看http-more的实际实施情况。它允许在上游更改包时轻松更新包。基本上这个过程是这样的:

  1. meteor create --package user:your-package

  2. cd user\:yuor-package/

  3. git submodule add https://github.com/meteor/meteor.git

    此时,您将整个Meteor存储库作为包的子模块,位于meteor目录中。您可以删除除meteor/packages/the-one-you-fork之外的所有其他目录。

  4. 将上游软件包中的文件复制到其他位置并应用更改。

  5. 通过为您已更改的文件运行diff old_file new_file来生成补丁文件。

  6. 创建一个构建脚本,用于更新Meteor子模块,并通过将修补程序应用于源文件来生成最终文件。这是my build.sh

    git submodule update --init     # This fetches the submodule repo at the commit...
    cd meteor                       # ...it was when the parent (we) committed.
    git fetch; git checkout master  # Actually update the submodule.
    cd -
    cp meteor/packages/http/{httpcall_server.js,httpcall_tests.js} .
    patch httpcall_server.js httpcall_server.patch
    patch httpcall_tests.js httpcall_tests.patch
    
  7. 将上游package.js合并到meteor create --package生成的样板文件中。您将需要上游的依赖项和包文件集,您应该添加/替换your own GitHub URL,包描述和修补文件。

    Package.describe({
      name: 'dandv:http-more',
      summary: 'Make ninja guru rockstar HTTP calls to remote servers',
      version: '1.0.7_1',  // wrapped package version number - see https://github.com/meteor/meteor/blob/devel/History.md#more-package-version-number-flexibility
      git: 'https://github.com/dandv/meteor-http-more.git'
    });
    
    // any Npm.depends the upstream has
    
    Package.onUse(function (api) {
      api.versionsFrom('0.9.0');  // I had to add this
      api.use('underscore');
      api.use('url@1.0.1');  // also had to specify some version of the url package
      api.export('HTTP');
      // original upstream package files
      api.addFiles('meteor/packages/http/httpcall_common.js', ['client', 'server']);
      api.addFiles('meteor/packages/http/httpcall_client.js', 'client');
      api.addFiles('meteor/packages/http/deprecated.js', ['client', 'server']);
      // patched files
      api.addFiles('httpcall_server.js', 'server');  // patched
    });
    
    Package.on_test(function (api) {
      // ...
      api.use('dandv:http-more', ['client', 'server']);  // your own package
    
      // same mix of original + patched files
      // ...
    });
    
  8. 转到父目录并运行
    来测试您的包 meteor test-packages user\:your-package/

  9. 如果测试通过,请再次切换到您的目录并运行meteor publish,然后再运行 git commitgit push在GitHub上发布包。