You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Eleventy中排除文件或文件夹,避免生成多余CSS?

解决Eleventy中SCSS组件文件被多余编译的问题

你当前的配置会把所有.scss文件都作为模板编译输出,这就是components下的SCSS被单独转成CSS的原因。可以通过以下两种方法解决:

方法一:仅编译指定的入口SCSS文件

修改.eleventy.js中的SCSS扩展配置,在编译逻辑里判断文件路径,只处理site.scss,忽略其他SCSS文件:

const sass = require("sass");
const path = require("node:path");

module.exports = function (eleventyConfig) {
  eleventyConfig.addPassthroughCopy("src/img");
  eleventyConfig.addPassthroughCopy("src/js");

  eleventyConfig.addTemplateFormats("scss");
  eleventyConfig.addExtension("scss", {
    outputFileExtension: "css",
    compile: function (inputContent, inputPath) {
      // 只处理入口文件site.scss,跳过components下的组件文件
      if (!inputPath.includes("styles/site.scss")) {
        return;
      }

      let parsedPath = path.parse(inputPath);
      let result = sass.compileString(inputContent, {
        loadPaths: [parsedPath.dir || ".", this.config.dir.includes],
      });

      return () => result.css;
    },
  });

  return {
    dir: {
      input: "src",
    },
  };
};

方法二:忽略components目录下的SCSS文件

通过ignores配置让Eleventy完全不处理components目录里的SCSS文件,这样它们就不会被编译或复制:

const sass = require("sass");
const path = require("node:path");

module.exports = function (eleventyConfig) {
  eleventyConfig.addPassthroughCopy("src/img");
  eleventyConfig.addPassthroughCopy("src/js");

  // 忽略components目录下的所有SCSS文件
  eleventyConfig.ignores.add("styles/components/*.scss");

  eleventyConfig.addTemplateFormats("scss");
  eleventyConfig.addExtension("scss", {
    outputFileExtension: "css",
    compile: function (inputContent, inputPath) {
      let parsedPath = path.parse(inputPath);
      let result = sass.compileString(inputContent, {
        loadPaths: [parsedPath.dir || ".", this.config.dir.includes],
      });

      return () => result.css;
    },
  });

  return {
    dir: {
      input: "src",
    },
  };
};

两种方法都能达到只生成site.css的效果,推荐第一种,更精准控制编译的文件范围。

内容的提问来源于stack exchange,提问作者Chris Barr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:52:32