我在将一个缩小的JavaScript文件检入Clearcase时遇到问题。有问题的文件是一行,远远超过8000 character limit that Clearcase imposes。
我知道JavaScript解释器在换行符时会做一些tricky things inserting semicolons,但我想知道在分号后添加换行符是否总是安全的。这样做是否有可能改变JavaScript代码的含义?
答案 0 :(得分:5)
回答您的直接问题:是的,您可以在结束语句的分号后添加换行符。文件中可能还有分号的其他用法(例如在字符串或正则表达式中),你不应该触摸它们。
我还有另一个问题:你为什么要检查一个缩小的JavaScript文件?我认为最好检查原始的详细JavaScript源代码。另外,版本控制系统通常对一行文件无效。如果您已经在检查原始JavaScript,则现在必须保持两个文件之间的一致性(即,当您更改一个文件时,必须刷新另一个文件)。我建议您检查一个脚本,该脚本会在部署时缩小原始,而不是将缩小版本保留在Clearcase中。
答案 1 :(得分:3)
分号可能封装在一个字符串中。在字符串中添加换行符会改变javascript的含义。
答案 2 :(得分:3)
如果分号在字符串或正则表达式中(例如var rex = /;/g;
- 在第二个分号后插入换行符是安全的),那么是的,这显然是个问题。否则,在声明后换行总是安全的。
答案 3 :(得分:3)
管理员或开发人员需要在存储工件的每个VOB上运行此命令 (在期望的VOB的背景下) (不是100%肯定-supertype,“binary_file”可能更好) (不是100%肯定-mergetype,“复制”可能会更好!) (您可以随后通过-replace选项更改此内容)
cleartool mkeltype -nc -supertype text_file -manager z_whole_copy -mergetype auto text_file_minified
这可用于纠正尝试签入失败的文件。 它们可能是用“text_file”类型创建的 text_file类型的各行不能超过8000个字符。
cleartool chtype -nc -force text_file_minified jquery-1.8.2.min.js
将此文件放在您签入的桌面/开发计算机上。 删除任何前导空格。
# 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]" ;
答案 4 :(得分:-1)
Javascript中的分号始终确定代码行的结尾。
鉴于此,除非该分号是字符串的一部分,否则在分号后添加换行符应始终是安全的。