Laravel Elixir 错误路径

Laravel Elixir wrong paths

这是我的gulpfile.js

var elixir = require('laravel-elixir');

elixir(function(mix) {
    mix.less([
       'style.less'
    ], 'public/css/style.css')
        .styles([
       'reset.css',
       'font-awesome.min.css',
       'style.css'
    ], 'public/css/app.css', 'public/css')
    .scripts(['jquery-1.12.0.min.js', 'main.js'], 'public/js/app.js', 'resources/assets/scripts')
    .version(['css/app.css', 'js/app.js']); 
});

结果我得到了文件

public/build/app-2a14246111.css
public/build/app-7790e07dfb.js
public/build/rev-manifest.json

但是当我尝试将 css 和 js 文件添加到布局时

<link rel="stylesheet" href="{{ elixir("css/app.css") }}">    
<script src="{{ elixir("js/app.js") }}"></script> 

我明白了

<link rel="stylesheet" href="/build/css/app-2a14246111.css">
<script src="/build/js/app-7790e07dfb.js"></script>

浏览器找不到它们,因为它试图找到

http://localhost:8080/build/css/app-2a14246111.css
http://localhost:8080/build/js/app-7790e07dfb.js

和项目文件夹名称以及 public 文件夹在路径中以某种方式丢失。如何解决?

其实我明白了,我可以在路径中添加点,例如

<link rel="stylesheet" href=".{{ elixir("css/app.css") }}">
<script src=".{{ elixir("js/app.js") }}"></script>

然后一切正常,但我不喜欢这种修复方式。

那是因为您是 运行 本地主机上的 Laravel 项目。当您将项目部署到服务器时,问题会自行解决(假设配置正确)。

如果您使用的是 Apache,您可以添加一个虚拟主机配置,这样您就可以使用 http://domain-name.app:

之类的东西来代替 http://localhost:8080/laravel/public
<VirtualHost *:80>   
    DocumentRoot "C:\Users\username\path\to\laravel\public" 
    ServerName domain-name.app
</VirtualHost>

然后在你的主机文件中添加:

127.0.0.1   domain-name.app

这样,您可以 link 到 HTML 中的绝对路径,例如 /css/somefile.css 而不是 ./css/somefile.css

结帐Homestead,来自Laravel,它有助于避免屁股上的很多痛苦。

FWIW...你也可以像这样用 URL::asset 包装长生不老药标签:

<link href="{{ URL::asset(elixir('css/app.css')) }}" rel="stylesheet">

这解决了我的问题,并且仍然允许我在端口 8888 上 运行。