我的ember插件如何告诉主机应用程序包含特定资产?

时间:2015-07-16 19:36:01

标签: ember.js ember-cli broccolijs

我有一个包含静态资产的库 - PNG,SVG,WOFF - 以及单个Sass文件。该库看起来像

- sass/
  - my-library/
    - all.scss
- images/
  - my-libarary/
    - logo.png

我希望增强此项目,使其与使用ember-cli的Ember应用程序一起使用。目标是让主机应用程序以

结束
- dist/
  - assets/
    - my-library/
      - all.css
      - logo.png

这是我试过的:

treeFor: function(type) {
  if (type !== 'styles') { return; }
  var sass = require('broccoli-sass');
  var mergeTrees = require('broccoli-merge-trees');
  var funnel = require('broccoli-funnel');

  var asCss = sass(
    [ path.join(absolutePathToMyLibrary, 'sass') ],
    'my-library/all.scss',
    'my-library/all.css'
  ];

  // Hoping to compile sass/my-library/all.scss to assets/my-library/all.css
  var css = funnel(asCss, {
    files: [ 'my-library/all.scss' ],
    destDir: 'assets'
  });

  // Hoping to copy images/my-library/* to assets/my-library/*
  var images = funnel(path.join(absolutePathToMyLibrary, 'images'), {
    destDir: 'assets'
  });

  return mergeTrees(css, images);
}

但是我得到了

ENOENT, no such file or directory '/Users/me/Code/my-app/tmp/tree_merger-tmp_dest_dir-0WdzK7Cd.tmp/my-library/'

当我运行ember build时。

1 个答案:

答案 0 :(得分:0)

答案很简单:我想要treeFor('public'),而不是treeFor('styles')。前者将任意资产添加到构建中。后者专门用于处理app/styles