Webpack Laravel Mix-将格式化的注释前置到已编译的css输出

Webpack Laravel Mix-将格式化的注释前置到已编译的css输出,webpack,laravel-mix,Webpack,Laravel Mix,我正在使用LaravelMix为Wordpress网站编译和缩小我的js和scss文件 当我使用“npm运行生产”运行mix时,scss文件中的注释将被删除。该文件是子主题样式定义,因此Wordpress希望子主题样式表中包含模板头。当我上传没有定义的minified style.css文件时,我收到以下警告: 错误:缺少模板。独立主题需要有index.php模板文件。子主题需要在style.css样式表中有一个模板头 此外,在创建/编辑新页面时,无法选择页面模板 目前,我正在将模板头从scss

我正在使用LaravelMix为Wordpress网站编译和缩小我的js和scss文件

当我使用“npm运行生产”运行mix时,scss文件中的注释将被删除。该文件是子主题样式定义,因此Wordpress希望子主题样式表中包含模板头。当我上传没有定义的minified style.css文件时,我收到以下警告:

错误:缺少模板。独立主题需要有index.php模板文件。子主题需要在style.css样式表中有一个模板头

此外,在创建/编辑新页面时,无法选择页面模板

目前,我正在将模板头从scss文件复制粘贴到已编译的css文件。我希望通过将未修改的主题头文件预先添加到已编译的scss文件中来自动化该过程

我试着用这种方法解决这个问题:

const Dotenv = require('dotenv-webpack');

mix.webpackConfig({
    plugins: [
        new Dotenv()
    ]
}).js('assets/js/app.js', 'public/js/')
    .js('assets/js/custom.js', 'public/js/')
    .sass('assets/css/style.scss', './')
    .combine([
        'assets/css/template-header.css',
        './style.css'
    ], './style.css');
但是合并方法,并且没有办法覆盖它

我对文件缩小和删除注释很满意,除了主题标题注释,所以完全消除scss处理的缩小并不是一个真正的选项


有没有一种方法可以组合这些文件以实现我在Laravel Mix中描述的结果?

我找到了一个解决方案。它需要一个额外的节点包,然后使用Laravel混合方法:

使用npm安装concat文件安装程序包 在webpack.mix.js文件中需要它,const concat=require'concat-files'; 追加then方法以与适当的回调混合。就我而言:

mix.webpackConfig({
    plugins: [
        new Dotenv()
    ]
}).js('assets/js/app.js', 'public/js/')
.js('assets/js/custom.js', 'public/js/')
.sass('assets/css/style.scss', './')
.then(function () {
    concat([
        'assets/css/template-header.css',
        'style.css'
    ], 'style.css', function (err) {
        if (err) { throw err; }
        console.log('done');
    });
});

我认为有一种更简单的方法可以在Laravel Mix中保留Wordpress主题评论块。在SASS中,注释可以以/*开头!以避免在压缩模式下剥离。-


注意:由于某些原因,我无法正确格式化本文中的代码部分:/
/*!
Theme Name: Twenty Twenty-One
Theme URI: https://wordpress.org/themes/twentytwentyone/
Author: the WordPress team
*/