css - Symfony Webpack Encore 重复的 CSS

标签 css symfony webpack sass webpack-encore

我关注了this (splitEntryChunks) 教程,以了解在使用 Webpack Encore 和 Symfony 时如何拆分文件。

不幸的是,我仍然不太理解它,而且我不断收到很多重复。我有以下 app.scss 文件:

// Config
@import "vars/_vars.scss";
@import "mixins/_fontface.scss";
@import "base/_common.scss";

此文件包含站点的基本样式并且始终导入到base.html.twig:

    <head>
        {% block stylesheets %}
            {{ encore_entry_link_tags('app') }}
        {% endblock %}
    </head>

这是我的 webpack.config.js:

const Encore = require('@symfony/webpack-encore');

Encore
    // [...]
    .addEntry('app', './assets/js/app.js')
    .addEntry('homepage', './assets/js/homepage.js')

    .splitEntryChunks()
    // [...]
;

现在我有一个 homepage.scss 文件,它包含主页的特定代码并继承自 base.html.twig。这是主页.html.twig:

{% extends 'base.html.twig' %}

{% block stylesheets %}
    {{ parent() }}
    {{ encore_entry_link_tags('homepage') }}
{% endblock %}

这是 homepage.scss(注意 app.scss 导入):

@import "../app.scss";
@import "../components/_intro.scss";

现在一切正常,但我有以下生成的 CSS:

<link rel="stylesheet" href="/build/app.css">
<link rel="stylesheet" href="/build/homepage.css">

第二个文件 (homepage.css) 也包含整个 app.css 文件(也是在前一行导入的)。

我怎样才能避免这种情况?

注意:如果我不在 homepage.scss 中使用 @import "../app.scss";,我会在编译期间收到“未使用的变量”错误。

最佳答案

我对此的看法是,您不能通过创建拆分块(或在 Webpack 4 缓存组中)来防止 sass/css Assets 中的重复。

做的时候

@import "../app.scss";
@import "../components/_intro.scss";

homepage.scss 将始终包含 app.scss。这是一项功能 - 而不是错误。

你可以

  1. 使用 the postcss loadercss nano并启用:discardduplicates .这可能意味着,所有的 css 必须在一个大文件中(不知道确切)

  2. 以更加模块化的方式重新排列 sass 文件内容。全局使用的 mixins 和变量在一个文件中。

  3. 尝试在您的 javascript 文件中导入 import '../components/_intro.scss'; 而不是在 sass 文件中。也许这会有所作为。

关于css - Symfony Webpack Encore 重复的 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58166182/

相关文章:

symfony - 在 EasyAdmin 3.x 中使用 autocomplete() 时如何设置 AssociationField 选择标签

html - 图像高度与宽度相同

javascript - 棋盘分成 6 个点,并在 5 秒后交换这些点

html - 带有标题和固定前 3 列的可滚动表格

symfony - 皮维克 : There are no commands defined in the “generate” namespace?

php - 在 Symfony 4/Twig 模板中包含资源(CSS、JS)

javascript - 如何在 webpack 中正确填充 URLSearchParams?

javascript - 如何使用 webpack 从模块中要求或仅导入必要的导出

javascript - 由 Express 服务器提供的 Webpack bundle - 找不到 bundle

html - jQuery 可以判断当前是否显示了 <select> 元素的 <option> 吗?