Laravel,codesleeve资产管道无法正常工作

时间:2014-01-06 18:33:55

标签: laravel asset-pipeline

我想让codesleeve asset-pipeline在我的网站上运行。浪费了一整天后,我终于在我的本地开发服务器上工作了。我现在上传了项目,看看是否所有内容都在实时服务器上运行。猜猜它没有。我猜这个问题与环境设置有关,即:

$env = $app->detectEnvironment(array(
'local' => array('your-machine-name'),

));

所以,我在本地服务器上将其更改为我的机器名,正如我所说,我已经工作了。那么在实时服务器上,这应该是什么? “localhost” 的?我尝试使用我的实时服务器的IP地址和域名为“live”添加另一个数组密钥,根据这个答案:http://tinyurl.com/pg6hwum没有任何作用。

另外,根据我关注的教程:

  

当您在本地环境中时,您会注意到所有资产文件都将单独包含在内...一旦您进入生产环境,您的所有资产将被连接成一个。

对我来说似乎也不是这样,因为管道似乎是半工作的,即。它连接了我的js和css文件,但不知何故弄乱了它们。

我真的很感激一些指针,因为我现在浪费了大量的时间。感谢。

2 个答案:

答案 0 :(得分:1)

首先将bootstrap/start.php文件的环境设置设置为以下内容:

$env = $app->detectEnvironment(array(

    'local'       => array('http://localhost', '*.local', 'http://local.sitename'),
    'development' => array('http://dev.sitename.com'),
    'production'  => array('http://www.sitename.com', 'http://sitename.com'),

));

其次,您需要检查您的laravel正在运行的环境,以检查您的环境设置是否正常运行。通过这样做:

App::environment()

通过这样做......你现在应该知道是什么导致了codeleeve资产管道的问题。

注意:有关详细信息,请参阅有关环境的文档here

答案 1 :(得分:1)

与其他环境(如本地环境)相比,生产时开箱即用的资产管道的行为会有所不同。我已经提出了一份提案来记录其中一些pain points and troubleshooting for new comers

如果您使用的是最新版本,那么在切换环境时会有两个重大的行为更改:

  1. 缓存 - 缓存生产资产。这意味着一旦你加载了一个页面,你就会被这些资产困住,直到你做到

    $> php artisan assets:clean

    这就是为什么在开发时应将环境设置为local

  2. 缩小 - 资产仅在生产时缩小。这可能会导致问题,因为minifiers有时会破坏代码。您可以采取一些解决方法来解决此问题。当我遇到某个文件(比如Twitter Bootstrap)时,我通常会做的事情就是使用.min.css扩展名,然后由缩放器跳过,然后写出 as-is

  3. 请注意,此行为开箱即用,可以通过编辑配置轻松修改。

    $> php artisan config:publish codesleeve/asset-pipeline
    

    然后编辑您的文件app/config/packages/codesleeve/asset-pipeline/config.php。有关这些选项的更多信息,请访问documentation here

    希望这有帮助。