Laravel Mix:一行编译所有SCSS文件

发布于 2025-02-12 14:24:15 字数 1293 浏览 3 评论 0原文

我一直在研究Laravel项目,并且我的资源文件夹中有许多.SCSS文件。因此,通常我只会像这样写它们,

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

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js')
    .js('resources/js/header.js', 'public/js')
    .sass('resources/sass/file1.scss', 'public/css')
    .sass('resources/sass/file2.scss', 'public/css')
    .sass('resources/sass/file3.scss', 'public/css')
    .sass('resources/sass/file4.scss', 'public/css')
    .sass('resources/sass/file5.scss', 'public/css')
    .sass('resources/sass/file6.scss', 'public/css')
    .sass('resources/sass/file7.scss', 'public/css')
    .sass('resources/sass/file8.scss', 'public/css')
    .sass('resources/sass/file9.scss', 'public/css')
    .sass('resources/sass/file10.scss', 'public/css')
    .sourceMaps();

有某种方法可以缩短它,而不是编码.sass(源,目的地),而是像源阵列一样将其写入,然后是目的地?在不将所有文件合并到一个CSS的情况下,因为当然,每个SASS文件都有自己的页面。喜欢.sass([array_source],目的地)?

I've been working on a laravel project and I've had many .scss files in my resource folder. So usually I would just write them like this

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

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js')
    .js('resources/js/header.js', 'public/js')
    .sass('resources/sass/file1.scss', 'public/css')
    .sass('resources/sass/file2.scss', 'public/css')
    .sass('resources/sass/file3.scss', 'public/css')
    .sass('resources/sass/file4.scss', 'public/css')
    .sass('resources/sass/file5.scss', 'public/css')
    .sass('resources/sass/file6.scss', 'public/css')
    .sass('resources/sass/file7.scss', 'public/css')
    .sass('resources/sass/file8.scss', 'public/css')
    .sass('resources/sass/file9.scss', 'public/css')
    .sass('resources/sass/file10.scss', 'public/css')
    .sourceMaps();

is there some way to shorten this so instead of coding .sass(source,destination), write it in like an array of source then the destination? Without merging all files into one css, because of course, each sass file has its own page it is used for. like .sass([array_source], destination)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

波浪屿的海角声 2025-02-19 14:24:15

2种方法:

第一方式:

制作一个名为app.scss内部的文件@import“ file.scss”包括所有文件。

然后.sass('Resource/Sass/App.scss','public/css')
但是,这将使所有文件成为一个文件。这可能不是您所追求的。

第二种方式:

const fs = require("fs");

fs.readdirSync("resources/scss/").forEach(fileName => 
    mix.scss(`resources/scss/${fileName}`, "public/css"));

这将使它们全部放在单个文件中。

2 ways:

1st way:

Make a file called app.scss and inside of this @import "file.scss" include all files.

then .sass('resources/sass/app.scss', 'public/css')
This will however make all files a single file. This may not be what you are after.

2nd way:

const fs = require("fs");

fs.readdirSync("resources/scss/").forEach(fileName => 
    mix.scss(`resources/scss/${fileName}`, "public/css"));

This will keep them all in single files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文