2014-04-15 14 views
5

Tôi đang cố gắng để có được đầu của tôi xung quanh broccoli.js nhưng đang chạy vào một lỗi. Nếu bạn nhìn vào GitHub repo của tôi, bạn sẽ thấy rằng tôi có một brocfile.js trông như thế này:Làm thế nào để có được một cây đơn giản của tập tin để concat bằng cách sử dụng 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]); 

và tôi nhận được lỗi này:

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) 

Về lâu dài, tôi muốn sử dụng điểm này làm điểm bắt đầu để xây dựng ứng dụng ember.js vì vậy tôi đã tạo một github repo. Nếu bạn đến đó bạn có thể thấy cấu trúc tập tin của tôi. Bất kỳ suy nghĩ về lý do tại sao tôi nhận được lỗi này?

Trả lời

4

Tôi đã đấu vật với Bông cải xanh chính mình trong vài ngày qua. Nó cũng mới với tôi, nhưng tôi đã nhân bản repo của bạn và nhận broccoli serve để làm việc bằng cách làm như sau:

1) Tôi đã tạo một tệp "loader.js" tại loader/loader.js. Tệp loader.js chứa mã đa điểm của Trình nạp mô-đun ES6 để cho phép các mô-đun ES6 tải trong các trình duyệt không phải ES6. Tôi đã lấy tệp từ ứng dụng mẫu Bông cải xanh: https://github.com/joliss/broccoli-sample-app/blob/master/vendor/loader.js

2) Tôi đã thêm bộ nạp vào cây ứng dụng và tham chiếu nó trong cấu hình compileES6. (Tùy chọn này là giá trị undefined trong lỗi của bạn.)

Đây là bản cập nhật brocfile.js được xây dựng thành công cho tôi.

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

Tôi hy vọng điều đó sẽ giúp bạn thực hiện bước tiếp theo trong cuộc phiêu lưu Bông cải xanh.

1

Bạn có thể sử dụng broccoli-concat, sau đó:

emberTests = concatFilter(emberTests, {inputFiles: ['**/*.js'], outputFile:'/tests.js'}); 
templates = concatFilter(templates, {inputFiles: ['**/*.handlebars'], outputFile:'/templates.js'}); 
trees  = concatFilter(trees, {inputFiles: ['**/*.js'], outputFile:'/app.js'}); 
Các vấn đề liên quan