是否有人有管理智能包的构建过程的经验,以便可以下载和提供外部文件?
例如,一个封装了javascript库的meteor智能包可以在构建应用程序时curl该库,并直接从服务器提供该库。这对于jquery-ui、Ace编辑器等很有用。
具体地说,我问的是正确使用Package._transitional_registerBuildPlugin的方法,它是在0.6.5中引入的。任何例子都是很棒的。
Grepping Meteor代码只显示添加源处理程序的内容,因此对于决定如何下载文件没有太大帮助。
./packages/templating/package.js:Package._transitional_registerBuildPlugin({
./packages/stylus/package.js:Package._transitional_registerBuildPlugin({
./packages/meteor/package.js:Package._transitional_registerBuildPlugin({
./packages/coffeescript/package.js:Package._transitional_registerBuildPlugin({
./packages/less/package.js:Package._transitional_registerBuildPlugin({一个相关的问题:允许智能包写入自己的.build文件夹的是什么?
发布于 2013-11-21 08:16:05
我知道这并不完全是对你问题的回答,但我忍不住要发表这个想法:)
我想到的最简单的事情就是按照您的建议使用curl实现一个简单的“代理”服务器。它可能或多或少类似于:
var spawn = Npm.require('child_process').spawn;
WebApp.connectHandlers.stack.splice (0, 0, {
route: '/jquery.js',
handle: function(req, res, next) {
spawn('curl', [
'https://code.jquery.com/jquery-1.10.2.min.js'
]).stdout.pipe(res);
res.writeHead(200, {
'Content-Type': 'text/javascript'
});
},
});尽管如此,它并没有解决-开箱即用-控制加载顺序的问题。
编辑
如果您不想在每次用户请求文件时都调用curl,那么您总是可以将其缓存在服务器上的某个地方,对吧?此外,该技术还允许您按需加载附加库,因此仅在实际需要时才加载。请注意,像王牌编辑器这样的东西可能会相当繁重。
发布于 2013-12-03 14:31:00
我最终将其实现为一个build plugin as part of my ShareJS smart package。它不是最漂亮的东西,但它做了它需要做的事情。我的方法是实现一个通用的智能包,用于处理来自Meteor包的CDN下载。
我希望,随着构建API更好地文档化,这样做的路径将变得更容易和更清晰。
https://stackoverflow.com/questions/20105730
复制相似问题