Laravel 5 和 Elixir - 指向错误的目录
Laravel 5 and Elixir - point to wrong directory
我有一个简单的脚本来组合样式:
elixir(function(mix) {
mix.styles([
'bootstrap.min.css',
'font-awesome.css',
'animate.css',
'style.css'
], "public/frontend/css");
});
我所有的 css 文件都在 public/frontend/css
目录中,我将 styles
函数的第二个参数设置为该基目录,但是如果我 运行 gulp
我得到:
[19:18:22] Starting 'default'...
[19:18:22] Starting 'styles'...
[19:18:22] Merging: resources/css/css/bootstrap.min.css,resources/css/public/frontend/css/font-awesome.css,resources/css/public/frontend/css/animate.css,resources/css/public/frontend/css/style.css
[19:18:22] Finished 'default' after 196 ms
[19:18:22] File not found: resources/css/css/bootstrap.min.css
[19:18:22] File not found: resources/css/public/frontend/css/font-awesome.css
[19:18:22] File not found: resources/css/public/frontend/css/animate.css
[19:18:22] File not found: resources/css/public/frontend/css/style.css
[19:18:22] Finished 'styles' after 206 ms
因此它将基本目录设置为 resources/css
。
我该如何解决?
编辑
我看错了问题。
mix.styles()
(和mix.scripts()
)的第二个参数指的是输出。但它需要第三个参数,指的是基本路径,所以这是你应该更改的参数,如下所示:
elixir(function(mix) {
mix.styles([
'bootstrap.min.css',
'font-awesome.css',
'animate.css',
'style.css'
], "path/to/output.css", "public/frontend/css");
});
如果需要,您可以在配置中更改基本路径,如上所述:
在项目的根目录下创建一个 elixir.json
文件,然后将以下内容放入其中:
{
"assetsDir": "public/frontend/"
}
你应该可以开始了。
只是为了提供更多信息,每当您需要覆盖默认配置时,请在此文件中执行。
默认配置为:
var config = {
production: !! util.env.production,
srcDir: 'app',
assetsDir: 'resources/assets/',
cssOutput: 'public/css',
jsOutput: 'public/js',
sourcemaps: ! util.env.production,
bowerDir: 'vendor/bower_components',
tasks: [],
watchers: { default: {} },
duplicate: [],
concatenate: { css: [], js: [] },
compile: {}
};
来自 node_modules/laravel-elixir/Config.js
。
您应该将 custom base directory
传递给第三个参数,而不是第二个。
合并自定义基目录中的样式表(Ref)
elixir(function(mix) {
mix.styles([
"normalize.css",
"main.css"
], 'public/build/css/everything.css', 'public/css');
});
我有一个简单的脚本来组合样式:
elixir(function(mix) {
mix.styles([
'bootstrap.min.css',
'font-awesome.css',
'animate.css',
'style.css'
], "public/frontend/css");
});
我所有的 css 文件都在 public/frontend/css
目录中,我将 styles
函数的第二个参数设置为该基目录,但是如果我 运行 gulp
我得到:
[19:18:22] Starting 'default'...
[19:18:22] Starting 'styles'...
[19:18:22] Merging: resources/css/css/bootstrap.min.css,resources/css/public/frontend/css/font-awesome.css,resources/css/public/frontend/css/animate.css,resources/css/public/frontend/css/style.css
[19:18:22] Finished 'default' after 196 ms
[19:18:22] File not found: resources/css/css/bootstrap.min.css
[19:18:22] File not found: resources/css/public/frontend/css/font-awesome.css
[19:18:22] File not found: resources/css/public/frontend/css/animate.css
[19:18:22] File not found: resources/css/public/frontend/css/style.css
[19:18:22] Finished 'styles' after 206 ms
因此它将基本目录设置为 resources/css
。
我该如何解决?
编辑 我看错了问题。
mix.styles()
(和mix.scripts()
)的第二个参数指的是输出。但它需要第三个参数,指的是基本路径,所以这是你应该更改的参数,如下所示:
elixir(function(mix) {
mix.styles([
'bootstrap.min.css',
'font-awesome.css',
'animate.css',
'style.css'
], "path/to/output.css", "public/frontend/css");
});
如果需要,您可以在配置中更改基本路径,如上所述:
在项目的根目录下创建一个 elixir.json
文件,然后将以下内容放入其中:
{
"assetsDir": "public/frontend/"
}
你应该可以开始了。
只是为了提供更多信息,每当您需要覆盖默认配置时,请在此文件中执行。 默认配置为:
var config = {
production: !! util.env.production,
srcDir: 'app',
assetsDir: 'resources/assets/',
cssOutput: 'public/css',
jsOutput: 'public/js',
sourcemaps: ! util.env.production,
bowerDir: 'vendor/bower_components',
tasks: [],
watchers: { default: {} },
duplicate: [],
concatenate: { css: [], js: [] },
compile: {}
};
来自 node_modules/laravel-elixir/Config.js
。
您应该将 custom base directory
传递给第三个参数,而不是第二个。
合并自定义基目录中的样式表(Ref)
elixir(function(mix) {
mix.styles([
"normalize.css",
"main.css"
], 'public/build/css/everything.css', 'public/css');
});