2016-10-31 2 views
2

Ich benutze Knockout und Browserify mit Stringify. Ich habe einige Knockout-Bindings in Kommentaren, um einen benutzerdefinierten Header innerhalb einer Iteration [1] in einer Komponente zu ermöglichen. Strygig streift die Kommentare aus, die ich für Knockout benötige; Gibt es eine Lösung, um Kommentare in einer Datei zu ignorieren oder bestimmte Arten von Kommentaren zu ignorieren?Browsersify/Stringify strips Knockout Kommentar Binding

[1] - http://knockoutjs.com/documentation/foreach-binding.html (Anmerkung 4)

+0

https://www.npmjs.com/package/stringify#minification – user3297291

Antwort

4

Wenn Sie Browserify verwenden, sollten Sie Gulp werden. In Ihren Stringify-Transformationsoptionen sollten Sie ein benutzerdefiniertes minifyOptions-Objekt angeben. Es gibt eine Option namens ignoreCustomComments, in der Sie ein Array von Regex angeben können, das vom Entfernen ausgeschlossen werden soll.

browserify({ 
    entries: 'index.js', extensions: ['.js'], watch: config.watching 
    }) 
    .transform(babelify, {presets: ['es2015']}) 
    .transform(stringify, { 
     appliesTo: {includeExtensions: ['.html']}, 
     minify: true, 
     minifyOptions: { 
     ignoreCustomComments: [/^(\s*ko)/, /^(\s*\/ko)/] 
     } 
    }) 

[/^(\s*ko)/, /^(\s*\/ko)/] alle Kommentare halten, die Leerzeichen haben dann die ‚ko‘ oder ‚/ ko‘ Kommentar zu binden. Wenn Sie jedoch minifyOptions auf ein neues Objekt setzen, werden alle Standardeinstellungen überschrieben: undefined; Daher müssen Sie diese jetzt angeben. Diese können here

Verwendung finden:

<!-- Will be removed --> 

<!-- ko if: true --> 
<h4>This will be shown</h4> 
<!-- /ko --> 

<!-- ko if: false --> 
<h4>This will NOT be shown</h4> 
<!-- /ko --> 
+0

Interessant. Es scheint zu funktionieren, aber ich bin mir nicht sicher, warum es die Kommentar-Schluss-Anweisung nicht ausblendet. – DrGodCarl

+0

Eine Bearbeitung gemacht, um tiefer zu gehen. – JDrost1818

Verwandte Themen