Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 定制&x27;主题';可以用早午餐吗?_Node.js_Brunch - Fatal编程技术网

Node.js 定制&x27;主题';可以用早午餐吗?

Node.js 定制&x27;主题';可以用早午餐吗?,node.js,brunch,Node.js,Brunch,我正试图弄清楚如何利用早午餐完成以下任务。这是我们应用程序的当前目录结构: --app --base (theme folder, considered the master for all themes) --sass --js --theme2 --sass --js --theme3 --sass --js ...so on 基本文件夹用作所有其他主题的主文件夹。但是,

我正试图弄清楚如何利用早午餐完成以下任务。这是我们应用程序的当前目录结构:

--app
    --base (theme folder, considered the master for all themes)
        --sass
        --js
    --theme2
        --sass
        --js
    --theme3
        --sass
        --js
...so on
基本文件夹用作所有其他主题的主文件夹。但是,如果另一个主题在sass目录或js目录中有一个文件与基本文件夹中的一个文件相匹配,它将覆盖基本文件夹中的该文件(这也适用于导入)

到目前为止,我已经创建了它所需要的工作方式,但它绕过了早午餐管道,因为我写出了文件(目前不支持文件连接),我更愿意使用适当的早午餐管道来完成这项工作

它在基本文件夹中遇到的每个sass或js文件都用于为另一个主题生成一个新文件。例如,假设基本主题有一个名为
main.scss
的文件。传递给compile的路径是
base/scss/main.scss
。现在,我想对其他主题使用相同的文件,因此我获得所有主题文件夹,并对其他每个主题动态使用此base main.scss文件。但是,如果文件导入存在于其他主题目录中,我也会修改内部导入以替换文件导入。它不是同一个文件被吐到多个位置


问题是,我希望动态生成新的CSS文件,以便brunch渲染到与传入的原始路径(以及此路径的joinTo配置选项)无关的不同文件夹。通过调用回调,它会自动使用传递给compile方法的原始路径参数。

在早午餐配置中使用,将
joinTo更改为包含
base
和给定主题。如果有帮助,您还可以为每个主题自定义构建输出目录或其他任何内容。然后使用类似于
brunch build--env theme1

的命令分别运行每个构建。您好,感谢您的回复,这让我找到了解决方案的一部分,但是它并没有解决我在覆盖未通过brunch编译的sass导入方面的问题。例如,在上面的github页面上,您可以看到一个示例,其中我使用themes文件夹中的文件覆盖了_header.scss文件。我看到的问题是,每个环境重写都不会再次启动编译周期,因此我可以。例如,如果我有两个主题+base,那么base中相同文件的编译周期只运行一次,而不管结果如何,然后输出被放在多个目录中。brunch适合我的用例吗?这与使用逗号分隔列表(--env foo,bar)可以同时应用多组覆盖有关。我认为这是单独运行/观看每个env是错误的吗?当我想一次构建所有主题时,我可以编写一个bash脚本来分别运行每个主题,然后更改导入,因为我知道每个env(主题)是什么。事实上,除非它为您移动文件,否则什么都不会发生-sass以自己的方式解决在何处拾取导入的文件,而这种方式不受构建工具的影响。您可能应该重新考虑如何组织覆盖的样式。关于多个环境,您误解了它的工作原理。每个env的覆盖只是以相同的方式彼此覆盖,它们与默认配置合并,从而为每个早午餐实例生成一个配置。您不会使用它一次构建多个主题-这只有在每个主题都将要到不同的构建文件时才可能。为此,只需在主配置中定义更多的
joinTo
s。