Как символически связать репозитории проектов Javascript с приложением Meteor

У Meteor отличная политика загрузки файлов для общего развития. Он автоматически загружает файлы из каталога приложения с некоторой специальной обработкой для каталогов public, private, client и server. (См. http://docs.meteor.com/#structuringyourapp)

При загрузке сторонних библиотек Javascript в приложение Meteor я обычно помещаю их в скрипт <head> или непосредственно в каталог client/compatibility, что хорошо работает для выпущенных файлов.

Однако иногда мне нужно связать разрабатываемую версию проекта напрямую из репозитория GitHub из определенной ветки при тестировании патчей или пулл-реквестов. Я уже делаю это все время для смарт-пакетов Meteor, которые получаются прозрачно. Однако я не уверен, как это сделать для общих (клиентских) библиотек Javascript. Более того, сложно привязать репо, а не указанную версию. Может кто сталкивался с этим подсказать?


person Andrew Mao    schedule 04.08.2013    source источник


Ответы (1)


Один из подходов к этому был кратко описан в https://github.com/meteor/meteor/issues/1229. .

Я обнаружил, что это можно чисто реализовать как резидентный интеллектуальный пакет в вашем приложении. Этот подход хорошо работает в Meteor 0.6.5 и любых будущих версиях, пока этот API не изменится. Сначала создайте следующее в package.js:

Package.on_use(function (api) {
    api.use(['routepolicy', 'webapp'], 'server');

    api.add_files('client.html', 'client');    
    api.add_files('server.js', 'server');
});

а в server.js вы заявляете, что хотите, чтобы Meteor обслуживал весь каталог (соответствующую часть репо) как часть приложения (в моем случае OpenLayers):

connect = Npm.require('connect');

RoutePolicy.declare('/lib', 'network');

WebApp.connectHandlers
  .use(connect.bodyParser())
  .use('/lib', connect.static("/home/mao/projects/openlayers/lib"));

наконец, client.html говорит вашему приложению загрузить код по правильному пути:

<head>
    <script src="/lib/OpenLayers.js"></script>    
</head> 

Предполагая, что указанный выше пакет находится в каталоге с именем openlayers, комментирование или раскомментирование openlayers в файле package моего приложения позволяет мне очень легко переключаться между скомпилированными выпусками и запуском из репозитория для этого пакета.

person Andrew Mao    schedule 09.08.2013