2016-01-21 24 views
15

Tôi đang cố gắng chạy babel-preset-es2015 trên JavaScript của tôi bằng cách sử dụng gulp, nhưng phải mất mãi mãi ngay cả trên một dòng mã. Ban đầu tôi đã thử với gói kịch bản của tôi là khoảng 700 loc, và sau đó với một kịch bản giả là 1 dòng. Trường hợp đầu tiên mất khoảng 9s - với 1 dòng tôi mất 8.38s.Gulp babel es2015 chuyển đổi rất chậm

Đây là thiết lập chính xác của tôi:

package.json:

{ 
    "devDependencies": { 
     "gulp": "^3.9.0", 
     "gulp-babel": "^6.1.1", 
     "babel": "^6.3.26", 
     "babel-preset-es2015": "^6.3.13" 
    }, 
    "babel": { 
     "presets": [ "es2015" ] 
    } 
} 

gulpfile.js:

gulp.task('js', function() { 
    return gulp.src('dummyscript.js') 
     .pipe(concat('site.bundle.js')) 
     .pipe(babel()) 
     .pipe(gulp.dest(paths.dest.scripts)); 

}); 

dummy.js:

console.log('dummy script'); 

Tôi chạy nút v4.2.4 và npm v2.14.12.

Các hoạt động khác như phản ứng gulp và gulp-uglify tất cả mất khoảng 180ms kết hợp.

Điều gì đang xảy ra?

+1

Bạn nên đảm bảo phụ thuộc của bạn được khấu trừ với 'npm depupe' và cân nhắc việc nâng cấp lên' npm @ 3'. Babel có thể khá chậm nếu không được khử tốt. – loganfsmyth

+0

npm3 đã thực hiện mẹo, cảm ơn! Xuống đến 600ms với kịch bản gốc của tôi, đoán tôi có thể sống với điều đó. Nếu bạn muốn làm cho rằng một câu trả lời tôi sẽ chấp nhận nó :) – severin

Trả lời

21

Babel 6 có nhiều phụ thuộc rất lồng nhau. Điều này có thể khá chậm nếu bạn có cây phụ thuộc không phẳng. Trong trường hợp của bạn, bạn đang sử dụng npm 2, bạn sẽ cần phải npm dedupe hoặc cài đặt [email protected] và cài đặt lại để các phụ thuộc của bạn được làm phẳng.

+0

này ^^^^^^^^^^^^ :) – NewZeroRiot

+0

Tôi đã thiếu một cài đặt lại với npm3. Điều này giảm 10s từ khởi động máy chủ của tôi! –

+0

Tôi mất 30 giây mỗi lần. – LCB