如何通过composer下载后设置bootstrap?

时间:2013-10-01 14:07:03

标签: laravel laravel-4 twitter-bootstrap-3 composer-php

我刚刚开始使用作曲家,我对它知之甚少,对网络应用程序开发有一点经验。

我刚刚浏览了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之后,如何让Lastvel项目中的bootstrap可用?

我的意思是,我可以看到bootstrap包已下载到vendor目录。之前我只是从它的官方网站下载bootstrap并手动将文件放在Laravel的公共目录中,但此时正确的方法是什么?我可以将引导文件保留在原来的位置,因为我希望定期将引导程序包更新到它的最新版本吗?

感谢。

7 个答案:

答案 0 :(得分:21)

我们有工匠命令来发布资产(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

我不确定路径..但​​这应该有效。

答案 1 :(得分:17)

正如教程所说,你必须将它复制到你的公共目录:

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就是将包放在供应商的文件夹中,必须不可见对外界。

但是你可以在post-install-cmd后创建一个Composer:

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

每次更新时都会为您复制这些文件。它可以使用PHP,bash或您可以在主机上运行的任何其他语言编写。文件:http://getcomposer.org/doc/articles/scripts.md

答案 2 :(得分:9)

刚才意识到php artisan asset:publish --path="vendor/twbs/bootstrap/dist/" bootstrapphp artisan vendor:publish --path="vendor/twbs/bootstrap/dist/" bootstrap不再有用了。

对我来说有用的是编辑composer.json以在scriptspost-update-cmd下添加以下内容:

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

答案 3 :(得分:3)

只需通过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/"
        ]
    },
}

答案 4 :(得分:0)

这对我来说效果更好

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

“r”标志使符号链接相对,从而指向真实文件夹

答案 5 :(得分:0)

我是Laravel和Bootstrap的新手(并且一起使用它们),当我遇到同样的问题时,我偶然发现了这个问题。我创建了一个新的Laravel项目,然后通过在Laravel项目的根目录中运行以下命令添加了Bootstrap:

%composer需要twbs / bootstrap

然后,在我的视图文件中,我包含以下代码:

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

似乎composer(或bootstrap)通过引用添加了包含Bootstrap css文件(位于非公共供应商文件夹中)的app.css。添加对app.css的引用是有效的,我可以在我的视图中使用Bootstrap组件。

答案 6 :(得分:0)

在Windows环境中,使用作曲家发布更新脚本(post-update-cmd)的解决方案可能是:

{
  "require": {
    "twbs/bootstrap": "4.3.1"
  },
  "scripts": {
    "post-update-cmd": [
      "RMDIR public\\assets\\bootstrap /S /Q" ,
      "XCOPY /E /I vendor\\twbs\\bootstrap\\dist public\\assets\\bootstrap"
    ]
  }
}

您将可以将public\assets\bootstrap文件夹中的引导程序文件导入HTML。