是否有一个带有条件指令的JavaScript小程序
Is there a JavaScript minifier with conditional directives?
我正在寻找一个JavaScript迷你器,它将有一些类似于条件编译指令的支持。
例如,最初的JavaScript代码可能像这样://#if Dev
showLoginScreen();
//#else
login("DevUser", "qwerty1");
//#endif
因此原始代码可以包含指令#define Dev
,但一旦进入生产,#define Dev
将被删除,并且微型程序将从其输出中排除行login("DevUser", "qwerty1");
。
是否有任何迷你器支持这种行为?
通过C预处理器运行代码,然后通过minifier运行输出。C预处理器除了对字符串字面值的处理之外,并不是真正特定于C的。
的例子:
cpp -DDev file.js /dev/stdout | jsmin > file-min.js
where file.js:
#if Dev
showLoginScreen();
#else
login("DevUser", "qwerty1");
#endif
将包含Dev代码,然后将其缩小。
为了使原始源代码按原样可执行,您可以在处理管道中再添加一个步骤。像这样编写代码:
//#if Dev
showLoginScreen();
//#else
login("DevUser", "qwerty1");
//#endif
,然后像这样处理:
sed 's!^//#!#!' file.js | cpp -DDev /dev/stdin /dev/stdout | jsmin > file-min.js
sed
部分用于从以//#
开头的行中剥离前导//
。然后cpp
对源进行正常预处理,cpp
的输出通过jsmin
进行缩小。
一个更好的解决方案可能只是像C程序员那样做,在运行之前总是对源文件进行适当的预处理。您可以编辑一个.jspp
("预处理JavaScript")文件,并让系统设置为在更改内容时对其进行适当的预处理,以便进行开发或部署。如果您使用频繁的测试,您可以将预处理作为测试工具调用的一部分。
(注意:命令行可能是关闭的;我从手册中计算出cpp部分,从jsmin.c源代码文件中计算出jsmin部分,所以我没有实际测试这个命令行。)
根据对类似问题的回答,我研究了C预处理器和其他一些竞争者。然后找到了我认为目前为止最好的答案——PHP。考虑:
1) PHP确实是一个预处理器(它在首字母缩略词中)。
2) PHP可以在大多数服务器上运行。你所要做的就是将文件扩展名从"。js"更改为"。php"或"。js.php",或者(我的偏好),对配置文件进行简单的编辑(您可以在其他地方找到详细信息)。
3)许多JavaScript开发人员已经熟悉或精通PHP。
4) PHP是图灵完备的,不像其他的预处理器。
你只需要基本的PHP知识就能受益匪浅。6) PHP的文档/教程/论坛比其他预处理器要多得多。
但最重要的是,它很奇怪,很酷。感谢给我这个主意的人——我现在找不到他们的帖子了。
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 基本的HTML Javascript程序.这是怎么回事
- 如何重复Javascript程序
- 我没有'我不明白“;temp<<=y"在这个javascript程序中执行
- Javascript程序,如果语句有困难
- JavaScript程序,随机生成一百次个位数(0,1,…9),并输出生成了多少个0s、1s、2s……9s
- 可以编写一个预先加载所有图像和视频的JavaScript程序
- 这个JavaScript程序是如何工作的
- JavaScript 程序中的错误
- 编写一个JavaScript程序来计算闰年
- 将 JavaScript 程序从 JSON 转换为 XML
- 基本的Javascript程序,需要帮助
- 如何结束 JavaScript 程序中间程序
- 为什么 JavaScript 程序无法运行
- JavaScript 程序中的多个文件
- 如何重置我的 Javascript 程序
- 在javascript程序中使用c动态链接库
- 如何让此 JavaScript 程序根据提示的输入向对象属性发出警报
- 购物清单 Javascript 程序列表项的文本格式不正确