2011-01-04 11 views
1

Ich habe ein Problem beim Einchecken einer minimierten Javascript-Datei in Clearcase. Die fragliche Datei ist eine einzelne Zeile, weit über die 8000 character limit that Clearcase imposes.Ist es immer sicher, einen Zeilenumbruch nach einem Semikolon in Javascript einzufügen?

Ich weiß, dass Javascript-Interpreter einige tricky things inserting semicolons bei Zeilenumbrüche tun, aber ich frage mich, ob es immer sicher sein sollte, einen Zeilenumbruch nach einem Semikolon hinzuzufügen. Ist es möglich, dass dies die Bedeutung des JavaScript-Codes ändert?

+0

YUI Compressor/Minifier hat eine Option --line-break hinzugefügt. Wahrscheinlich auch andere. Wenn die Quelle verfügbar ist, kann sie mit --line-break 7500 erneut minimiert werden. – englebart

Antwort

5

Um Ihre unmittelbare Frage zu beantworten: Ja, Sie können Zeilenumbrüche nach einem Semikolon hinzufügen, das eine Anweisung beendet. In der Datei können Semikolons (z. B. in einer Zeichenfolge oder einem Regex) verwendet werden, und Sie sollten diese nicht berühren.

Ich habe eine andere Frage für Sie: Warum checken Sie eine minimierte JavaScript-Datei ein? Ich denke, es ist besser, die ursprüngliche ausführliche JavaScript-Quelle einzuchecken. Außerdem sind Versionskontrollsysteme im Allgemeinen für Dateien mit nur einer Zeile nicht effektiv. Wenn Sie das ursprüngliche JavaScript bereits einchecken, müssen Sie nun die Konsistenz zwischen den beiden Dateien beibehalten (d. H. Wenn Sie eines ändern, müssen Sie das andere aktualisieren). Ich schlage vor, dass Sie ein Skript einchecken, das das ursprüngliche minimiert, wenn Sie es bereitstellen, statt die verkleinerte Version in Clearcase zu behalten.

+0

Die verkleinerte JS-Datei ist Teil der Dojo-Bibliothek, die tatsächlich Teil einer anderen Bibliothek ist, die mein Projekt verwendet. Daher enthalten Updates für dieses andere Projekt nur den minimierten Dojo-Code, und der Dojo-Code wird niemals als Teil der regulären Entwicklungsarbeit bearbeitet (er würde nur im Rahmen einer Aktualisierung der anderen Bibliothek aktualisiert werden). – pkaeding

+1

@pkaeding Können Sie die Datei als Binärdatei hinzufügen? Es entspricht einem. –

+0

@Kathy ja, das ist, was ich getan habe. Ich musste den ClearCase-Administrator dazu bringen, den Dateityp zu ändern, aber sobald das erledigt war, verlief alles reibungslos. (Ich habe diese Antwort als akzeptiert markiert, weil ich fühlte, dass sie die Frage, die ich gestellt hatte, vollständig beantwortet hatte, obwohl es nicht das war, was ich getan hatte, um das Problem, das ich hatte, zu lösen) – pkaeding

3

Ein Semikolon könnte in eine Zeichenfolge eingeschlossen sein. Wenn Sie der Zeichenfolge einen Zeilenumbruch hinzufügen, ändert sich die Bedeutung von JavaScript.

+2

Und viel Glück beim Erstellen einer Regex, um ein Semikolon zwischen passenden Anführungszeichen zu finden. ;) –

3

Wenn das Semikolon innerhalb einer Zeichenfolge oder einer Regex ist (wie var rex = /;/g; — ist es nur sicher, einen Zeilenumbruch nach dem zweiten Semikolon einfügen), dann ja, das wäre offensichtlich ein Problem. Andernfalls ist es immer sicher, nach einer Anweisung einen Zeilenumbruch zu haben.

-1

Ein Semikolon in Javascript bestimmt immer das Ende einer Codezeile.

Vor diesem Hintergrund sollte es immer sicher sein, einen Zeilenumbruch nach einem Semikolon hinzuzufügen, es sei denn, dieses Semikolon ist Teil einer Zeichenfolge.

3

Admin oder vielleicht Entwickler braucht, diesen Befehl auf jeden VOB laufen, wo Artefakt gespeichert (in Zusammenhang mit der gewünschten VOB) (nicht 100% sicher über die -supertype „binary_file“ könnte besser sein) (nicht 100 % über dem -mergetype sicher, "Kopie" könnte besser sein!) (Sie immer diese

später über -replace Option ändern können) Cleartool mkeltype -nc -supertype text_file -manager z_whole_copy -mergetype Auto text_file_minified

Dies kann verwendet werden, um Dateien zu korrigieren, die beim Einchecken fehlgeschlagen sind. Sie wurden wahrscheinlich mit einer Art von "text_file" erstellt einzelne Zeilen text_file Typen können 8000 Zeichen nicht überschreiten.

Cleartool CHTYPE -nc -force text_file_minified jquery-1.8.2.min.js

PUT diese Datei auf Ihrem Desktop/dev Maschine, wo Sie checkin. Entfernen Sie alle führenden Leerzeichen.

# AAA.magic 
# This needs to copied to all developer desktops 
# copy it next to default.magic (or cc.magic) 
# under ...\ClearCase\config\magic 

# Leave these from the default.magic just in case 
# files are processed in alphabetic order, hence the AAA prefix 

# Check stat type 
directory : -stat d ; 
block_device : -stat b ; 
char_device : -stat c ; 
socket : -stat s ; 
fifo : -stat f ; 

# minified javascript and CSS 
# some of these violate the 8000 character per line limit 
# of clearcase text tools/type managers 
# *.min.js 
text_file_minified : -name "*.[mM][iI][nN].[jJ][sS]" ; 
# *.min.css 
text_file_minified : -name "*.[mM][iI][nN].[cS][sS][sS]" ;