2015-12-27 17 views
9

Tôi đã cố gắng thiết lập gói gulp để tiêm phụ thuộc vào index.html. Mọi thứ hoạt động tốt ngoại trừ chức năng biến đổi. Tôi cần phải thay thế một phần của filepath theo cách sau: /frontend/src/ ->/static/ tôi đã cố gắng để làm điều đó như thế này (copy-dán từ một nơi nào):Biến đổi tiêm Gulp không hoạt động

transform : function (filePath, file, i, length) { 
       var newPath = filePath.replace('/frontend/src', ''); 
       console.log('inject script = '+ newPath); 
       return '<script src="/static/' + newPath + '"></script>'; 
      } 

Sau khi thực hiện, tôi có không có gì (ngoại trừ đầu ra gulp chuẩn) trong bảng điều khiển, và filepath chưa được chuyển đổi xuất hiện trong tệp kết quả. Có vẻ như biến thể tùy chỉnh của tôi không chạy và biến đổi mặc định hoạt động thay thế.

+2

nhìn thấy bạn full gulpfile hoặc nhiệm vụ định nghĩa có thể giúp đỡ, câu trả lời từ @ qcz trông tốt –

+0

cho chúng ta thấy nhiệm vụ gulp hoàn chỉnh của bạn – harishr

Trả lời

6

Sau đây đang làm việc cho tôi ngay cả với nhiều cấp độ (/**/*.js thay vì /*.js): function

gulp.task('inject', function() { 
    gulp.src('./test.html') 
     .pipe(inject(
      gulp.src(['./Content/js/*.js'], {read: false }), 
      { 
       transform: function (filePath, file, i, length) { 
        var newPath = filePath.replace('/Content/js/', ''); 
        console.log('inject script = '+ newPath); 
        return '<script src="/static/' + newPath + '"></script>'; 
       } 
      }) 
     ) 
     .pipe(gulp.dest('./')); 
}); 
1

gulp-inject plugin chuyển đổi hoạt động như dự định. Cấu hình của nhiệm vụ ngụm là như sau -

gulp.src(path.normalize('./app/index.html')) 
    .pipe(inject(
     gulp.src([path.normalize('./frontend/src/*.js')], {read: false}), { 
      transform : function (filePath, file, i, length) { 
       var newPath = filePath.replace(path.normalize('/frontend/src'), ''); 
       console.log('inject script = '+ newPath); 
       return '<script src="/static' + newPath + '"></script>'; 
      } 
     } 
    )) 
    .pipe(gulp.dest('./build')); 

Để đảm bảo nó hoạt động đa nền tảng (Windows, Linux), path.normalize được sử dụng

Kiểm tra mã ví dụ tại - https://github.com/pra85/gulp-inject-example

Các vấn đề liên quan