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')
将 fonts
和 images
文件夹放入 storage/app/public
- 运行
php artisan storage:link
(storage:link artisan command)
- 将资产文件中的路径更改为新目录
- 运行
gulp
它解决了我的问题。现在我又可以gulp watch
了。
把我的两分钱扔在这里。我有同样的问题,一旦我停止使用起始/相对路径选项,它就消失了,而是使用完整的相对路径(相对于 /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');
虽然不漂亮,但很管用。
当我尝试 运行 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')
将
fonts
和images
文件夹放入storage/app/public
- 运行
php artisan storage:link
(storage:link artisan command) - 将资产文件中的路径更改为新目录
- 运行
gulp
它解决了我的问题。现在我又可以gulp watch
了。
把我的两分钱扔在这里。我有同样的问题,一旦我停止使用起始/相对路径选项,它就消失了,而是使用完整的相对路径(相对于 /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');
虽然不漂亮,但很管用。