2015-12-27 8 views
9

Ich habe versucht, gulp-inject einzurichten, um Abhängigkeiten in index.html zu injizieren. Alles funktioniert gut außer Transformationsfunktion. Ich brauche Teil Filepath in der folgenden Art und Weise zu ersetzen: - /frontend/src/>/static/ Ich habe versucht, es wie folgt aus (Kopie kleistert von irgendwo) zu tun:Gulp-inject-Transformation funktioniert nicht

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

Nach der Ausführung, ich habe In der Konsole wird nichts (außer Standard-Gulp-Ausgabe) angezeigt, und der nicht transformierte Dateipfad wird in der Ergebnisdatei angezeigt. Es sieht so aus, als ob meine benutzerdefinierte Transformation nicht ausgeführt wird und stattdessen die Standardumwandlung funktioniert.

+2

sehen Ihre volle gulpfile oder aufgabendefinition könnte helfen, die antwort von @qcz sieht gut aus –

+0

zeigen sie uns ihre komplette schluckaufgabe – harishr

Antwort

6

Die folgende arbeitet für mich sogar mit mehreren Ebenen (/**/*.js statt /*.js):

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 Plugins Transformationsfunktion wie vorgesehen funktioniert. Die Konfiguration der schluck Aufgabe ist wie folgt -

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')); 

sicherzustellen, dass es funktioniert plattformübergreifend (Windows, Linux), path.normalize verwendet wird

den Beispielcode zum Prüfen auf - https://github.com/pra85/gulp-inject-example

Verwandte Themen