Загрузите Laravel альтернативную общую папку на машине разработки.

У нас есть сценарий сборки, который минимизирует javascript / css, а затем копирует его в общую папку.

Я бы хотел, чтобы ящики разработки загружали файлы из папки приложения, где неминимизированные сценарии хранятся в ящиках разработчика, но при этом запускают минимизированные скрипты в производственной среде.

ЧТО Я ПОПРОБОВАЛ ТАК:

-Изменение публичного пути:

if (App::environment() == 'development') {
    App::bind('path.public', function () {
        return app_path() . '/unminimized';
    });
}

Это работает везде, где мы используем public_path (), но интерфейсный программист использует относительные пути, а не URL :: asset () (или еще что-то), для загрузки javascript (мы используем фреймворк, поэтому это нелегко изменить) . Его javascript все еще загружается из общей папки

-Изменение nginx: я пробовал изменить root_path в nginx с / website / public на / website / code. Это правильно загружает javascript, но тогда мои маршруты не срабатывают.

Есть ли у кого-нибудь идеи, как это сделать?


person Jordan Lapp    schedule 10.06.2015    source источник
comment
Если вы измените nginx так, чтобы он указывал на / website / code в поле разработчика, а затем скопируете файл index.php из / website / public в / website / code, он должен исправить ваши маршруты. Вы можете сделать это, создав общедоступную символическую ссылку на index.php. Я недостаточно знаком с nginx, чтобы знать, как он обрабатывает символические ссылки.   -  person Nicholas Hall    schedule 10.06.2015
comment
@NicholasHall, я попробую.   -  person Jordan Lapp    schedule 10.06.2015
comment
@NicholasHall Спасибо! Это сработало, но мне также пришлось изменить эти две строки в index.php, чтобы они соответствовали новому относительному расположению каталога начальной загрузки. Вы хотите представить это в качестве ответа, чтобы я мог вам поверить в это? требуется DIR. '/ .. / .. / .. / bootstrap / autoload.php'; $ app = require_once DIR. '/ .. / .. / .. / bootstrap / start.php';   -  person Jordan Lapp    schedule 11.06.2015


Ответы (2)


Если вы измените nginx так, чтобы он указывал на / website / code в поле разработчика, а затем скопируете файл index.php из / website / public в / website / code, он должен исправить ваши маршруты.

Вам нужно будет изменить следующие строки в index.php:

require __DIR__.'/../bootstrap/autoload.php';

а также

$app = require_once __DIR__.'/../bootstrap/start.php';

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

person Nicholas Hall    schedule 11.06.2015

Кажется довольно круглым ...

Дайте мне сначала посмотреть, правильно ли я что-то понимаю, вы пишете свои вещи на языках предварительного компилятора (scss / sass / less / coffeescript)?

Если это так, то не имеет значения, что вы делаете с несжатым материалом, поскольку:

  1. Вы должны протестировать свой миниатюрный код, прежде чем нажимать на развертывание
  2. Вы не должны развертывать одновременно свой минифицированный код и версии для разработчиков.

Самый простой способ, как я вижу, вы решаете эту проблему, - это использовать что-то вроде gulp-inject написать задачу gulp что вы можете передать флаг --dev или --prod, который будет управлять тем, какие версии файлов вставляются в ваши шаблоны лезвий (по умолчанию --dev).

Естественно, было бы также полезно написать аналогичную задачу для отмены этих изменений.

Затем, если вы хотите сделать еще один шаг вперед, создайте выделенную VCS и управляйте своими версиями для разработки и производства в разных «ветвях».

person marblewraith    schedule 10.06.2015
comment
1) У нас отдельный процесс тестирования, не бойтесь! Свернутый код действительно проходит тестирование. 2) У нас есть блок разработчика, в который развертывается наш код разработки. Наш интерфейсный разработчик не хочет, чтобы ему приходилось запускать задачу gulp каждый раз, когда он меняет один символ. - person Jordan Lapp; 10.06.2015
comment
Тогда использовать наблюдатель или глоток-часы? - person marblewraith; 10.06.2015
comment
Мы используем grunt (не мой выбор, это делает наш фреймворк). - person Jordan Lapp; 11.06.2015