web-dev-qa-db-fra.com

Comment installer bootstrap après le téléchargement via composer?

Je commence tout juste à utiliser Composer. Je connais très peu de choses à ce sujet et j'ai une petite expérience du développement d'applications Web.

Je viens juste de me promener dans Nettuts + Tutorial, alors j’ai une question de base à propos de composer.

{
  "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"
}

Si je configure mon composer.json comme ci-dessus, après l'exécution de composer install --dev, comment puis-je obtenir l'amorçage disponible dans le projet Laravel?

Je veux dire, je peux voir que le paquet d'amorçage est téléchargé dans le répertoire du fournisseur. Avant, je ne faisais que télécharger bootstrap depuis son site officiel et mettre manuellement les fichiers dans le répertoire public de Laravel, mais quelle est la bonne façon de procéder pour le moment? Puis-je laisser les fichiers d'amorçage là où ils se trouvent, car je souhaite mettre à jour le package d'amorçage à sa dernière version périodiquement?

Merci.

29
Artisan

Nous avons une commande artisanale pour publier les actifs (CSS, JS, ..). Quelque chose comme ça devrait marcher.

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

je ne suis pas sûr du chemin .. Mais cela devrait marcher.

21
brainless

Comme le dit le tutoriel, vous devez le copier dans votre répertoire public:

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

MODIFIER:

Vous les avez vraiment copiées, car vos fichiers d'actif doivent se trouver dans le dossier public uniquement et Composer consiste uniquement à placer des packages dans le dossier de votre fournisseur, lequel ne doit pas être visible du monde extérieur. 

Mais vous pouvez créer un Composer post-install-cmd:

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

Et lui faire copier ces fichiers pour vous chaque fois qu’une mise à jour se produit. Il peut être écrit avec PHP, bash ou tout autre langage que vous pouvez utiliser sur votre hôte. Docs: http://getcomposer.org/doc/articles/scripts.md .

17

Je viens de me rendre compte que php artisan asset:publish --path="vendor/twbs/bootstrap/dist/" bootstrapou php artisan vendor:publish --path="vendor/twbs/bootstrap/dist/" bootstrap ne fonctionne plus.

Ce qui a fonctionné pour moi, c’est de modifier le fichier composer.json afin d’ajouter ce qui suit sous scripts, post-update-cmd:

"scripts": {
        "post-update-cmd": [
            "php artisan optimize",
            "mkdir -p public/bootstrap",
            "cp -R vendor/twbs/bootstrap/dist/ public/bootstrap/"
        ]}
8
Yoga

Il suffit de faire un lien symbolique vers le dossier comme indiqué ci-dessus par LeviXC :

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

Ou plusieurs commandes:

{
    "scripts": {
        "post-update-cmd": [
           "php artisan optimize",
           "ln -sf vendor/Twitter/bootstrap/dist/ public/vendor/bootstrap/"
        ]
    },
}
3
DanFromGermany

Cela a fonctionné mieux pour moi

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

Le drapeau "r" rend le lien symbolique relatif, pointant ainsi vers le dossier réel

0
MauricioOtta

Je suis nouveau à Laravel et Bootstrap (et à les utiliser ensemble) et je suis tombé sur ce fil lorsque j'ai le même problème. J'ai créé un nouveau projet Laravel, puis ajouté Bootstrap en exécutant la commande suivante dans le répertoire racine du projet Laravel:

% composer a besoin de twbs/bootstrap

Ensuite, dans mon fichier de vue, j'ai inclus le code suivant:

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

Il semble que composer (ou bootstrap) ajoute app.css, qui inclut les fichiers css Bootstrap (situés dans le dossier du fournisseur non public) par référence. L'ajout de la référence à app.css a fonctionné et j'ai pu utiliser les composants Bootstrap de mon point de vue.

0
Adam Astley