我发现自己需要分叉spraprable包,但我很难找到有关如何使用最新版本的Meteor(0.9.4)的任何好资源。任何人都可以指出我正确的方向吗?
答案 0 :(得分:1)
我已经完成了 - 将http
包分成了http-more
(不幸的是因为Meteor团队repeatedly refused实施了我提交的一个简单补丁,可以指定代理)。
查看http-more的实际实施情况。它允许在上游更改包时轻松更新包。基本上这个过程是这样的:
meteor create --package user:your-package
cd user\:yuor-package/
git submodule add https://github.com/meteor/meteor.git
此时,您将整个Meteor存储库作为包的子模块,位于meteor
目录中。您可以删除除meteor/packages/the-one-you-fork
之外的所有其他目录。
将上游软件包中的文件复制到其他位置并应用更改。
通过为您已更改的文件运行diff old_file new_file
来生成补丁文件。
创建一个构建脚本,用于更新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
将上游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
// ...
});
转到父目录并运行
来测试您的包
meteor test-packages user\:your-package/
。
如果测试通过,请再次切换到您的目录并运行meteor publish
,然后再运行
git commit
和git push
在GitHub上发布包。