这篇长篇大论的帖子的最终目标是使用CodeKit钩子将输出文件(在所有其他内容都被预先考虑之后)进行Uglify & Mangle,这样一旦文件组合在一起,就可以从Hook运行Uglify,这样就可以绕过"eof“错误。
我尝试在CodeKit的UI的Bash脚本钩子区域中使用了一些示例。另外,下面详细介绍了我的解决方案是如何在CodeKit中构建的。
感谢您的阅读。
# Outputs a copy of "common.js" file with new name, but does not uglify or mangle
$uglify $CK_OUTPUT_PATH \
-o $CK_PROJECT_ROOT/js/common.min.js -c –m
# Same thing, outputs only a copy with new name
$CK_OUTPUT_PATH uglifyjs --compress --mangle --output $CK_PROJECT_ROOT/js/common.min.js使用CodeKit3,我有一个文件,它有几个其他文件的前缀,如下所示。
// @codekit-prepend "rules.js"
// @codekit-prepend "domStart.js"
// @codekit-prepend "mainStructure.js"
// @codekit-prepend "pages.js"
// @codekit-prepend "grids.js"
// @codekit-prepend "modals.js"
// @codekit-prepend "thirdParty.js"
// @codekit-prepend "s508.js"
// @codekit-prepend "domEnd.js"CodeKit的选项非常容易使用,但我有一个问题。因为我预先准备的许多文件都需要准备好DOM,所以我创建了两个文件,一个是"domStart.js",另一个是"domEnd.js“,它们听起来完全一样。
"domStart.js“包含...
$(function(){"domEnd.js“包含...
});//end ready因此,中间的所有内容现在都包装在一条$(function(){ *prepended files* });//end ready语句中。
问题是,当我通过CodeKits UI压缩、格式化或损坏文件时,我在CodeKit的控制台中得到了以下错误输出。我知道这是因为"domStart.js“文件包含没有闭合的开头"{”,因此文件结束错误。
UglifyJS: Minification failed:
Parse error at /Users/colemmic/dev/roomstogo-store/roomstogo-web/src/main/webapp/static/js/common/domStart.js:1,13
$(function(){
^
SyntaxError: Unexpected token: eof (undefined)
at JS_Parse_Error.get (eval at <anonymous> (/Applications/CodeKit.app/Contents/Resources/engines/node_modules/uglify-js/tools/node.js:27:1), <anonymous>:86:23)
at /Applications/CodeKit.app/Contents/Resources/engines/node_modules/uglify-js/bin/uglifyjs:384:39
at time_it (/Applications/CodeKit.app/Contents/Resources/engines/node_modules/uglify-js/bin/uglifyjs:620:15)
at /Applications/CodeKit.app/Contents/Resources/engines/node_modules/uglify-js/bin/uglifyjs:345:9
at tryToString (fs.js:455:3)
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:442:12)发布于 2017-05-19 23:44:54
在对此进行了许多小时的额外研究之后,我设计出了一个可行的解决方案。
因为CodeKit3稍有不同,所以必须定义uglify的完整路径。
/Applications/CodeKit.app/Contents/Resources/engines/node_modules/uglify-js/bin/uglifyjs $CK_OUTPUT_PATH \
-p -c -m -o $CK_PROJECT_ROOT/js/common.min.js所以上面的声明并不遥远,但是因为应用程序包含了其中的所有框架,所以在它们可以运行之前只需要定义它们。
https://stackoverflow.com/questions/44048866
复制相似问题