Laravel Elixir 6 在 "gulp watch" 上出现异常

Laravel Elixir 6 getting exception on "gulp watch"

当我尝试 运行 gulp watch 时,出现此错误:

stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^

Error: ENOENT: no such file or directory, stat 'XXXX\public\build\css\client-18724fe72d.css'
    at Error (native)

我试图将 client.scss 文件留空,错误消失了。我发现当我的 client.scss:

中有这些行时,有时会出现错误
// Pages
@import 'pages/client/auth';
@import 'pages/client/normals';
@import 'pages/client/orders';

我已经检查了每一个,语法之类的都没有问题。更重要的是,当我 运行 gulp 时,它没有任何错误。

这是我的 gulpfile.js:

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

elixir(mix => {
    mix
        .sass('app.scss')
        .sass('client.scss', 'public/css/client.css')
        .sass('panel.scss', 'public/css/panel.css')
        .copy('resources/assets/fonts', 'public/build/fonts')
        .copy('resources/assets/images', 'public/build/images')
        .webpack('app.js')
        .webpack('panel.js')
        .version(['css/app.css', 'css/client.css', 'css/panel.css', 'js/app.js', 'js/panel.js'])
});

这是文件结构:

有什么地方我做错了吗?

正如你在我的 gulpfile.js 中看到的,我将 files/folders 复制到 /build 文件夹,这可能是 Laravel Elixir 6 的问题,当我想到现在,这听起来也是一个糟糕的方法。

所以我解决这个问题的方法是:

  • gulpfile.js 中删除这些行:

    .copy('resources/assets/fonts', 'public/build/fonts')
    .copy('resources/assets/images', 'public/build/images')
    
  • fontsimages 文件夹放入 storage/app/public

  • 运行 php artisan storage:link (storage:link artisan command)
  • 将资产文件中的路径更改为新目录
  • 运行 gulp

它解决了我的问题。现在我又可以gulp watch了。

归功于 ejdelmonico on laracasts

把我的两分钱扔在这里。我有同样的问题,一旦我停止使用起始/相对路径选项,它就消失了,而是使用完整的相对路径(相对于 /resources)。

所以代替:

mix.styles([
    'vendors/jquery-steps/demo/css/jquery.steps.css',
    'vendors/pace/pace-minimal.css',
    'vendors/bootstrap/dist/css/bootstrap.min.css',
    '../node_modules/sweetalert2/dist/sweetalert2.min.css',
], 'public/css/vendors.css', 'public');

这有效,gulp watch 运行 再次:

mix.styles([
    '../../../public/vendors/jquery-steps/demo/css/jquery.steps.css',
    '../../../public/vendors/pace/pace-minimal.css',
    '../../../public/vendors/bootstrap/dist/css/bootstrap.min.css',
    '../../../node_modules/sweetalert2/dist/sweetalert2.min.css',
], 'public/css/vendors.css');

虽然不漂亮,但很管用。