Ember.js 在ember cli构建中包括特定的样式表或javascript 问题

Ember.js 在ember cli构建中包括特定的样式表或javascript 问题,ember.js,ember-cli,broccolijs,Ember.js,Ember Cli,Broccolijs,我正在从事一个Ember.js项目,它为不同的客户提供不同的版本(产品)。虽然功能大致相同,但每种产品的样式却大不相同。因此,我们有“默认”和特定于产品的样式表。我被要求修改构建代码,以便在最终的应用程序中只编译相应的.css(.less)文件 起初,我从错误的角度看待这个问题:我试图排除包含不必要文件的文件夹,但收效甚微。直到那时我才意识到,默认情况下不包含特定于产品的文件并在构建期间将其添加到树中更有意义 解决方案 在改变了我的观点后,我发现还有另一种方法。我更改了样式表,这样所有的“默认外

我正在从事一个Ember.js项目,它为不同的客户提供不同的版本(产品)。虽然功能大致相同,但每种产品的样式却大不相同。因此,我们有“默认”和特定于产品的样式表。我被要求修改构建代码,以便在最终的应用程序中只编译相应的.css(.less)文件

起初,我从错误的角度看待这个问题:我试图排除包含不必要文件的文件夹,但收效甚微。直到那时我才意识到,默认情况下不包含特定于产品的文件并在构建期间将其添加到树中更有意义

解决方案 在改变了我的观点后,我发现还有另一种方法。我更改了样式表,这样所有的“默认外观”都进入了导入库。less,我为每个产品创建了一个
import-[name\u of\u product]。less
,其中包含默认外观的import语句,因此我只有一个要构建的文件。使用
EmberApp
中的选项,并假设产品名称存储在名为
flavor
my code的过程环境变量中,如下所示

// ember-cli-build.js

/* global require, module */
var EmberApp = require('ember-cli/lib/broccoli/ember-app');

module.exports = function(defaults) {
  // y u do dis
  const options = { outputPaths: { app: { css: { app: false } } } };

  const lessFileName = 'import-' + process.env.FLAVOUR.toLowerCase();
  options.outputPaths.app.css[lessFileName] = 'assets/application.css'

  const app = new EmberApp(defaults, options);

  return app.toTree();
};
总有一些东西 该代码唯一的问题是它仍然需要一个
应用程序。更少的
,而这行代码或者构建失败,都无法(没有时间)找到解决方案

我还必须指出,上述解决方案并没有解决最初的问题,即:
如何在使用
app.toTree()
之前从工作目录中排除特定文件,以便它们不会不必要地增加文件大小。非常友好,并指出回购协议中的插件可能用于此类目的。再说一次,我还没来得及检查(

我想你可以用

大概是这样的:

return new Funnel(app.toTree(), {
  include: ['**/*']
  exclude: ['styles/*.css']
});

一般情况下,您可以在
ember cli build.js

文件中执行任何您可以执行的操作。这里是我的
ember cli build.js
文件的一个链接,以防您需要检查。我删除了不相关的代码行。感谢您的响应。我尝试了它,但不幸的是没有成功,在编译的dist/app.js中删除了这些行从排除的文件中仍然出现,这意味着我这样做的原因,即减小最终文件大小的问题仍然存在。如果我可以帮助处理任何日志等,请让我知道。我想你想从最终输出中删除文件。如果你有这些文件的编译步骤,你必须在这之前进行筛选。可能会使用in-repo插件。好的,我重新检查了整个过程,在一些排除函数console.log()的帮助下,我了解了您所说的内容。the.toTree()返回已编译的树以进行处理,因此我无法排除我想要的文件夹。你能为我提供一些类似的简单in-repo插件或文档以外的任何示例吗?此外,我将重写我的问题,以便更好地反映我的问题。请查看
less
插件!他们使用挂钩提供所需的文件。您可以使用in-repo插件执行相同的自定义工作。