Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Настройка путей для SenchaCMD (https://javascript.ru/forum/extjs/58996-nastrojjka-putejj-dlya-senchacmd.html)

Infarch 21.10.2015 15:06

Настройка путей для SenchaCMD
 
Здравствуйте.

У меня есть воркспейс, в нем несколько приложений. Когда одно из приложений билдается, оно оказывается по следующему пути: "${workspace.build.dir}/${build.environment}/${app.name}". Как можно настроить один из проектов для билда в другую папку?
Например, чтобы файлы оказались в "с:/htdocs/${app.name}"?
Я пробовал менять app.json:
"output": {
        "base": "с:/htdocs/${app.name}"
    },

Это не помогло. Что еще можно попробовать?

nohuhu 21.10.2015 21:04

Здравствуйте тоже.

Спросил у командирщиков, советуют попробовать "c:\\htdocs\\${app.name}". Для вящей пользы можно ещё запускать с флагом -debug:

sencha -debug app build

Потом можно будет заслать лог разработчикам, чтобы они посмотрели.

Infarch 22.10.2015 14:04

nohuhu, спасибо за ответ!
Я уже добился чего хотел несколько иным способом, но получил очередную проблему которую непонятно как решить. Но давайте обо всем по порядку.
Для начала, в sencha.cfg я создал константу которая указывает на мой веб сервер:
docia.htdocs.dir = c:/bb_projekt/docia/webserver/htdocs

Далее, в app.json моего приложения добавил вот такое:
"production": {
    	"output": {
    		"base": "${docia.htdocs.dir}/${app.name}"
    	}
    }

Теперь билд идет туда куда я хочу, но вот не обошлось без ложки дегтя. Когда я тестирую приложение, я запускаю его прямо из воркспейса, ну не хочется мне постоянно запускать билд на каждое изменение! И вот там теперь не находится css файл. Мое приложение называется Toster, и оно пытается подгрузить Toster-all.css с адреса http://executor.interlogic.com.ua/do...Toster-all.css. Если уж лезть в билды то адрес должен быть таким: http://executor.interlogic.com.ua/Toster/Toster-all.css. Как и где можно это починить?

nohuhu 22.10.2015 21:35

Честно говоря, не совсем понимаю, что вы хотите получить в итоге. Вы меняете пути в production build, файлы попадают куда нужно. Отладку на production вести не нужно, для этого есть development build. Настройки для него меняются отдельно.

Также не совсем понятно, как вы запускаете приложение прямо из workspace. Просто открываете файл index.html в браузере через file:// схему? Я бы не рекомендовал так делать, будут проблемы с отладкой Ajax запросов и некоторых других вещей из-за браузерной защиты. Лучше используйте sencha app watch и встроенный сервер Cmd.

Infarch 23.10.2015 11:20

Да, файлы попадают куда нужно, так что к продакшен билду нареканий нет. Но вот в остальном я несколько запутался. Девелопмент билд это что? Вы извините, может я не внимательно читал мануалы, можете линкануть нужный ресурс?

Теперь о том, как я запускаю индекс приложения в воркспейсе. Конечно же, не через file://. Я создал алиас для воркспейса в локальном Апаче, и у меня получилось так: http://executor.interlogic.com.ua/sw/Toster/index.html. Так что весь аджакс работает корректно. Но вот тут возникает проблема о которой я писал выше.

Как только я выполнил sencha app build, приложение (то что в воркспейсе) начало искать свой css по неправильному пути. Насколько я понимаю, билд меняет бутстрап приложения в воркспейсе. Я попробовал запустить watch как вы и советовали. Он мне поднял локальный сервер, опять таки изменил бутстрап (судя по логам) и теперь css тянется из продакшен билда по правильному пути.

А вот отлаживать приложение под ватчем я не могу! Дело в том что сенчевское приложение у меня, это часть большего сайта, который работает под локальным Апачем. И приложение постоянно к нему обращается за данными, используя относительные ссылки. Watch стартует свой сервер на порте отличном от 80, так что основной сайт становится недоступен из приложения.

Однако я тут нашел некий workaround для решения проблем. У меня работает watch и правит бутстрап. А тестирую я приложение, заходя на него через мой апач, а не через watch сервер. Не скажу что все это красиво, но жить можно.

Тем не менее, я бы с удовольствием почитал о рецептах кошерной разработки и деплоя.

kolka 23.10.2015 17:30

Для подобных целей я использую этот мануал, и тут . Все что нужно делать - это редактировать - build.xml

nohuhu 23.10.2015 22:42

Цитата:

Сообщение от Infarch (Сообщение 392901)
Да, файлы попадают куда нужно, так что к продакшен билду нареканий нет. Но вот в остальном я несколько запутался. Девелопмент билд это что? Вы извините, может я не внимательно читал мануалы, можете линкануть нужный ресурс?

Ух, навскидку ресурсами не поделюсь. Сам не помню, искать сейчас некогда. :) Вкратце есть разные типы сборок: development, testing, production. В development каждый файл с классом грузится отдельно, CSS не минифицируется. Testing идёт дальше и собирает весь код в app.js, но не минифицирует. Production идёт ещё дальше, код собирается в единый app.js и выкидываются блоки <debug></debug>, код и CSS минифицируется.

Цитата:

Теперь о том, как я запускаю индекс приложения в воркспейсе. Конечно же, не через file://.
Спасибо, теперь понятнее.

Цитата:

Однако я тут нашел некий workaround для решения проблем. У меня работает watch и правит бутстрап. А тестирую я приложение, заходя на него через мой апач, а не через watch сервер. Не скажу что все это красиво, но жить можно.
Да я б не сказал, что прямо так уж некрасиво. Основной смысл app watch в том, чтобы следить за файловой системой и делать инкрементальные сборки. Локальный HTTP сервер это уж так, побочная плюшка. В смысле, Cmd его сама внутренне использует, ну так и вы тоже можете; если это почему-то неудобно и есть основной сервер, то и ладно.

Цитата:

Тем не менее, я бы с удовольствием почитал о рецептах кошерной разработки и деплоя.
Я напрямую Cmd не занимаюсь, поэтому могу поделиться только ссылкой на документацию: http://docs.sencha.com/cmd/6.x/. Вообще разработка и внедрение это большая, очень большая тема. На прошлом SenchaCon этим вопросам было уделено несколько сессий: http://www.senchacon.com.

nohuhu 23.10.2015 22:44

Цитата:

Сообщение от kolka (Сообщение 392944)
Все что нужно делать - это редактировать - build.xml

Можете привести примеры, когда вам нужно было редактировать build.xml? Я спрошу у разработчиков, может быть есть какие-то существующие механизмы для решения тех же задач.

kolka 26.10.2015 08:59

Цитата:

Сообщение от nohuhu (Сообщение 392967)
Можете привести примеры, когда вам нужно было редактировать build.xml? Я спрошу у разработчиков, может быть есть какие-то существующие механизмы для решения тех же задач.

У меня, по сути, проблем никаких пока не возникало. Это я для Infarch дополнительная информация.

Infarch 26.10.2015 17:07

Воспользовавшись ссылкой номер два от kolka (спасибо!), я написал пост-билд обработчик который копирует файлы туда, куда мне надо. Проблема как бы решена наименьшей кровью, но все равно терзает вопрос: а почему билд делал мне кривую ссылку на css? В том же треде форума представитель Сенчи (mitchellsimoens, между прочим целый Sencha - Sr Software Engineer) советует тот же метод, на котором я споткнулся. Не все так гладко в королевстве Сенчи видимо...

nohuhu 27.10.2015 00:40

Цитата:

Сообщение от Infarch (Сообщение 393118)
Воспользовавшись ссылкой номер два от kolka (спасибо!), я написал пост-билд обработчик который копирует файлы туда, куда мне надо. Проблема как бы решена наименьшей кровью, но все равно терзает вопрос: а почему билд делал мне кривую ссылку на css?

На этот вопрос вряд ли можно ответить, не имея более подробной информации. Навскидку я бы сказал, что ссылка была не кривая, а просто не совсем подходящая для уникальных условий вашего проекта. С другой стороны, я в Cmd не специалист, так что мне можно не верить. :)

Цитата:

В том же треде форума представитель Сенчи (mitchellsimoens, между прочим целый Sencha - Sr Software Engineer) советует тот же метод, на котором я споткнулся. Не все так гладко в королевстве Сенчи видимо...
Митч тоже Cmd напрямую не занимается, так что я не считал бы его авторитетным источником ответов на вопросы "почему" и "зачем". Возможно, он такой вопрос уже командирщикам задавал когда-нибудь, а может и сам build.xml подправил. В сущности, этот скрипт никто не запрещает модифицировать, он потому и лежит в директории с вашим приложением, чтобы можно было напильником по месту доводить. :)

XAPuTOH 03.11.2015 09:27

Решаю аналогичный вопрос.

Спасибо этой теме, продакшен компилится куда нужно.
Но вопрос по ресурсам. Они копируются тудаже куда билдится index.html

А мне бы их в другую папку запихнуть.

Пока не нашел как это делать. может сталкивался кто?

XAPuTOH 03.11.2015 10:13

Пока решил вопрос следующим образом - прописал путь к index.html в нужную для ресурсов директорию. А потом index.html копирую куда нужно.

nohuhu 03.11.2015 23:34

Можно сконфигурировать app.json:

"output": {
        "base": "${ext.dir}/build/examples/kitchensink",
        "page": "index.html",
        "manifest": "${build.id}.json",
        "js": "${build.id}/app.js",
        "resources": {
            "path": "./${build.id}/resources",
            "images": "./${build.id}/resources/images",
            "shared": "./resources",
            "toolkit": "${toolkit.name}/resources",
            "base": "."
        },
        "deltas": {
            "enable": false
        },
        "appCache": {
            "enable": false
        }
    },


Это кусок из app.json, взятого из примера KitchenSink. Там много чего ещё есть интересного. :)

XAPuTOH 05.11.2015 08:48

Попробовал.
Это ресурсы толкитов.

А вот папка ресурсов которая в корне лежит всегда копируется тудаже куда и index.html

nohuhu 06.11.2015 22:11

Папка ресурсов, которая в корне - это уникальные ресурсы вашего приложения? Если не трудно, покажите структуру директорий в приложении, .sencha/app/sencha.cfg и app.json. Многие настройки в sencha.cfg и app.json дублируются, может где-то что-то не так пошло.

XAPuTOH 06.11.2015 22:54

Да уникальные ресурсы приложения.
Я для опытов взял admin dashboard.
Там в корне папка resources.

Пока писал ответ слово "уникальные" натолкнуло на мысль что такого рода ресурсы всегда должны быть в корне приложения? иначе с путями могут возникнуть непонятки. Так?

nohuhu 06.11.2015 23:45

Под уникальными ресурсами я имел в виду ресурсы, которые относятся только к данному приложению. Помимо этого могут быть еще ресурсы в toolkit, в пакетах и т.д. Насколько я помню обсуждение этого вопроса с командирщиками, одной из задач Cmd является агрегирование всех ресурсов, относящихся к приложению, в одну директорию. Это необходимо делать, т.к. собранное приложение должно быть самодостаточно и готово к простому копированию на сервер.

Если мы говорим о примере admin-dashboard, то в его app.json есть секция output, которая регулирует финальное местоположение разных артефактов сборки, в т.ч. ресурсов. Над секцией output есть довольно подробный комментарий, дающий примеры настроек для разных типов артефактов.

А вот откуда берутся "исходные" ресурсы? Для этого в том же app.json есть секция resources, которая и задаёт пути к директориям с ресурсами.

Попробуйте поэкспериментировать с настройками, чтобы получить нужный вариант.


Часовой пояс GMT +3, время: 11:43.