31

我是 Composer 的初学者,所以我对它知之甚少,对 Web 应用程序开发的经验也很少。

我正在阅读Nettuts+教程,并且有一个关于 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"
}

composer.json如果我如上所述设置我的文件,在执行之后composer install --dev,如何使 Bootstrap 可用于 Laravel 项目?

我的意思是,我可以看到 Bootstrap 包已下载到供应商目录。之前我只使用从其官网下载 Bootstrap 并手动将文件放在 Laravel 的公共目录中,但是这里的正确方法是什么?我可以将 Bootstrap 文件留在原处吗,因为我想定期将 Bootstrap 包更新到其最新版本?

谢谢。

4

7 回答 7

22

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

我不确定路径..但​​这应该可行。

于 2014-01-10T08:07:27.530 回答
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 就是将软件包放在供应商的文件夹中,外部世界一定不能看到。

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

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

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

于 2013-10-01T14:17:28.263 回答
9

刚刚意识到php artisan asset:publish --path="vendor/twbs/bootstrap/dist/" bootstrapphp 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/"
        ]}
于 2015-09-05T09:32:18.203 回答
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/"
        ]
    },
}
于 2015-08-06T00:52:08.973 回答
1

在 Windows 环境中使用 composer post update script ( 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 格式导入。

于 2019-11-14T14:03:43.243 回答
0

这对我来说效果更好

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

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

于 2016-03-31T00:28:01.600 回答
0

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

%composer 需要 twbs/bootstrap

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

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

似乎作曲家(或引导程序)通过引用添加了 app.css,其中包括引导 css 文件(位于非公共供应商文件夹中)。添加对 app.css 的引用有效,并且我能够在我的视图中使用 Bootstrap 组件。

于 2017-04-06T02:14:32.810 回答