2014-04-15 14 views
5

Próbuję uzyskać głowę około broccoli.js, ale mam uruchomiony błąd. Jeśli spojrzeć na moim GitHub repo, widać, że mam brocfile.js, który wygląda tak:Jak uzyskać proste drzewo plików do konkatowania za pomocą broccoli.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]); 

i otrzymuję ten błąd:

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) 

Na dłuższą metę chciałbym użyć tego jako punktu wyjścia do budowania aplikacji ember.js, więc stworzyłem github repo. Jeśli tam pójdziesz, zobaczysz moją strukturę plików. Wszelkie przemyślenia na temat tego, dlaczego otrzymuję ten błąd?

Odpowiedz

4

Sam się borykałem z Brokułami przez ostatnie kilka dni. Jest to dla mnie nowe, ale sklonowałem twoje repo i otrzymałem broccoli serve do pracy, wykonując następujące czynności:

1) Stworzyłem plik "loader.js" pod numerem loader/loader.js. Plik loader.js zawiera kod polilill modułu ładującego modułu ES6, aby umożliwić modułom ES6 ładowanie w przeglądarkach innych niż ES6. Pobrałem plik z przykładowej aplikacji Broccoli: https://github.com/joliss/broccoli-sample-app/blob/master/vendor/loader.js

2) Wprowadziłem program ładujący do drzewa aplikacji i odwołałem się do niego w konfiguracji compileES6. (Ta opcja miała wartość undefined w Twoim błędzie.)

Oto zaktualizowany brocfile.js, który z powodzeniem buduje dla mnie.

//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]); 

Mam nadzieję, że pomoże ci to przejść do następnego etapu Twojej przygody z Brokułami.

1

Można użyć broccoli-concat, a następnie:

emberTests = concatFilter(emberTests, {inputFiles: ['**/*.js'], outputFile:'/tests.js'}); 
templates = concatFilter(templates, {inputFiles: ['**/*.handlebars'], outputFile:'/templates.js'}); 
trees  = concatFilter(trees, {inputFiles: ['**/*.js'], outputFile:'/app.js'}); 
Powiązane problemy