Ric*_*uen 3 javascript conditional-compilation minify
我正在寻找一种JavaScript缩小器,它将对类似于条件编译指令的东西提供某种支持.
例如,原始JavaScript代码可能看起来像这样:
//#if Dev
showLoginScreen();
//#else
login("DevUser", "qwerty1");
//#endif
Run Code Online (Sandbox Code Playgroud)
所以原始代码可以包含一个指令#define Dev但是一旦它进入生产#define Dev就会被删除,并且minifier login("DevUser", "qwerty1");将从它的输出中排除该行.
任何缩小器是否支持这种行为?
只需通过C预处理器运行代码,然后通过minifier运行该输出.除了处理字符串文字之外,C预处理器并不是特定于C的.
例:
cpp -DDev file.js /dev/stdout | jsmin > file-min.js
Run Code Online (Sandbox Code Playgroud)
其中file.js是:
#if Dev
showLoginScreen();
#else
login("DevUser", "qwerty1");
#endif
Run Code Online (Sandbox Code Playgroud)
将包括Dev代码然后缩小它.
为了使原始源代码可执行,您可以向处理管道添加一个步骤.像这样写你的代码:
//#if Dev
showLoginScreen();
//#else
login("DevUser", "qwerty1");
//#endif
Run Code Online (Sandbox Code Playgroud)
然后像这样处理它:
sed 's!^//#!#!' file.js | cpp -DDev /dev/stdin /dev/stdout | jsmin > file-min.js
Run Code Online (Sandbox Code Playgroud)
该sed部分用于//从开头的线开始剥离前导//#.cpp然后预处理源为正常,并从输出cpp通过被供给jsmin用于缩小率.
一个更好的解决方案可能只是像C程序员那样做,并且在运行之前总是适当地预处理你的源文件.您可以编辑.jspp("预处理JavaScript")文件,并将系统设置为在进行更改时适当地进行预处理以进行开发或部署.如果您正在使用频繁的测试,则可以在测试工具的调用中进行预处理.
(注意:命令行可能已关闭;我从联机帮助页中找到了cpp部分,从jsmin.c源代码文件中找到了jsmin部分,所以我实际上没有测试过这个命令行.)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |