如何使用broccoli.js获取一个简单的文件树来连接

Cul*_*son 5 javascript node.js npm

我试图让我的头围绕broccoli.js,但我遇到了一个错误.如果你查看我的GitHub仓库,你会看到我有一个看起来像这样的brocfile.js:

brocfile.js

var compileES6 = require('broccoli-es6-concatenator')
var pickFiles = require('broccoli-static-compiler');
var mergeTrees = require('broccoli-merge-trees')


var app = 'app'
app = pickFiles(app,{
    srcDir: '/',
    destDir: 'app-kit'
})

var appJS = compileES6(app, {
    inputFiles: ['/app-kit/**/*.js'],
    outputFile: '/dist/app.js'
})

module.exports = mergeTrees([appJS]);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Built with error:
Error: ENOENT, no such file or directory 'tmp/static_compiler-tmp_dest_dir-JjclDVEm.tmp/undefined'
    at Object.fs.statSync (fs.js:684:18)
    at addLegacyFile (/Users/cully/Sites/ember-todo/node_modules/broccoli-es6-concatenator/index.js:130:44)
    at /Users/cully/Sites/ember-todo/node_modules/broccoli-es6-concatenator/index.js:47:5
    at invokeCallback (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/promise.js:228:21)
    at publish (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/promise.js:176:9)
    at publishFulfillment (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/promise.js:312:5)
    at flush (/Users/cully/Sites/ember-todo/node_modules/broccoli/node_modules/rsvp/dist/commonjs/rsvp/asap.js:41:9)
    at process._tickCallback (node.js:415:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)
Run Code Online (Sandbox Code Playgroud)

从长远来看,我想用这个作为构建ember.js应用程序的起点,所以我创建了一个github repo.如果你去那里你可以看到我的文件结构.有关为什么我收到此错误的任何想法?

小智 4

在过去的几天里,我自己一直在与西兰花搏斗。这对我来说也是新的,但我克隆了你的存储库并broccoli serve通过执行以下操作开始工作:

1)我在 处创建了一个“loader.js”文件loader/loader.js。loader.js 文件包含 ES6 Module Loader polyfill 代码,以允许 ES6 模块在非 ES6 浏览器中加载。我从 Broccoli 示例应用程序中获取了文件:https://github.com/joliss/broccoli-sample-app/blob/master/vendor/loader.js

2)我将加载器注入到应用程序树中并在compileES6配置中引用它。(此选项是undefined您错误中的值。)

这是为我成功构建的更新brocfile.js

//brocfile.js

var compileES6 = require('broccoli-es6-concatenator');
var pickFiles = require('broccoli-static-compiler');
var mergeTrees = require('broccoli-merge-trees');


var app = 'app';
app = pickFiles(app,{
  srcDir: '/',
  destDir: 'app-kit'
});

// Reference to ES6 loader
var loader = "loader";

// Squash the loader and app trees into one
var sourceTrees = [app, loader];
sourceTrees = new mergeTrees(sourceTrees);

var appJS = compileES6(sourceTrees, {
  loaderFile: 'loader.js', // This required option was undefined before
  inputFiles: ['app-kit/**/*.js'],
  outputFile: '/dist/app.js'
});

module.exports = mergeTrees([appJS]);
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助您在西兰花冒险中迈出下一步。