Как настроить начальную загрузку после загрузки через composer?


Я только начинаю использовать composer, я так мало знаю об этом и имею небольшой опыт разработки веб-приложений.

Я только что прошелся по Учебнику Nettuts+, поэтому у меня есть основной вопрос о композиторе.

{
  "require": {
    "laravel/framework": "4.0.*",
    "way/generators": "dev-master",
    "twitter/bootstrap": "dev-master",
    "conarwelsh/mustache-l4": "dev-master"
  },
  "require-dev": {
    "phpunit/phpunit": "3.7.*",
    "mockery/mockery": "0.7.*"
  },
  "autoload": {
    "classmap": [
      "app/commands",
      "app/controllers",
      "app/models",
      "app/database/migrations",
      "app/database/seeds",
      "app/tests/TestCase.php"
    ]
  },
  "scripts": {
    "post-update-cmd": "php artisan optimize"
  },
  "minimum-stability": "dev"
}

Если я настрою свой composer.json, как указано выше, после выполнения composer install --dev, как мне сделать загрузочный файл доступным для использования в проекте Laravel?

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

Спасибо.

Author: iamcastelli, 2013-10-01

6 answers

У нас есть команда artisan для публикации ресурсов (CSS, JS,..). Что-то вроде этого должно сработать.

php artisan asset:publish --path="vendor/twitter/bootstrap/bootstrap/css" bootstrap/css
php artisan asset:publish --path="vendor/twitter/bootstrap/bootstrap/js" bootstrap/js

Я не уверен насчет пути.. Но это должно сработать.

 21
Author: brainless, 2014-01-10 08:07:27

Как сказано в руководстве, вы должны скопировать его в свой общедоступный каталог:

cp vendor/twitter/bootstrap/docs/assets/js/html5shiv.js public/js/html5shiv.js
cp vendor/twitter/bootstrap/docs/assets/js/bootstrap.min.js public/js/bootstrap.min.js

ИЗМЕНИТЬ:

Вы действительно должны скопировать их, потому что ваши файлы активов должны находиться только в общей папке , а Composer - это все о размещении пакетов в папке вашего поставщика, которая не должна быть видна внешнему миру.

Но вы можете создать композитора после установки-cmd:

{
    "scripts": {
        "post-update-cmd": "MyVendor\\MyClass::postUpdate",
    }
}

И заставляйте его копировать эти файлы для вас каждый раз, когда происходит обновление. Это может быть написанный с использованием PHP, bash или любого другого языка, который вы можете запустить на своем хосте. Документы: http://getcomposer.org/doc/articles/scripts.md.

 17
Author: Antonio Carlos Ribeiro, 2016-11-26 19:20:49

Только что понял, что php artisan asset:publish --path="vendor/twbs/bootstrap/dist/" bootstrap или php artisan vendor:publish --path="vendor/twbs/bootstrap/dist/" bootstrap больше не работают.

Что сработало для меня, так это редактирование composer.json, чтобы добавить следующее в scripts, post-update-cmd:

"scripts": {
        "post-update-cmd": [
            "php artisan optimize",
            "mkdir -p public/bootstrap",
            "cp -R vendor/twbs/bootstrap/dist/ public/bootstrap/"
        ]}
 7
Author: Yoga, 2015-09-05 09:40:40

Просто создайте символическую ссылку на папку, как сказано выше, с помощью Levixc:

{
    "scripts": {
      "post-update-cmd": "ln -sf vendor/twitter/bootstrap/dist/ public/vendor/bootstrap/"
    }
}

Или несколько команд:

{
    "scripts": {
        "post-update-cmd": [
           "php artisan optimize",
           "ln -sf vendor/twitter/bootstrap/dist/ public/vendor/bootstrap/"
        ]
    },
}
 3
Author: DanFromGermany, 2017-05-23 12:02:23

Это сработало лучше для меня

"scripts": {
    "post-update-cmd": [
        "mkdir -p html/vendor/",
        "ln -sfr vendor/twbs/bootstrap/dist html/vendor/bootstrap"
    ]
},

Флаг "r" сделал символическую ссылку относительной, указывая таким образом на реальную папку

 0
Author: MauricioOtta, 2016-03-31 00:28:01

Я новичок в Laravel и Bootstrap (и в их совместном использовании), и я наткнулся на эту тему, когда у меня возникла та же проблема. Я создал новый проект Laravel, затем добавил начальную загрузку, выполнив следующую команду из корневого каталога проекта Laravel:

%композитору требуются twbs/начальная загрузка

Затем в мой файл просмотра я включил следующий код:

<link href="css/app.css" rel="stylesheet">

Похоже, что composer (или bootstrap) добавляет файл app.css, который включает файлы css начальной загрузки (которые находятся в папке "непубличный поставщик") по ссылке. Добавление ссылки на app.css сработало, и я смог использовать компоненты начальной загрузки, на мой взгляд.

 0
Author: Adam Astley, 2017-04-06 02:14:32