Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript条件包含预缩减:是否存在这样的工具?_Javascript_Conditional Compilation_Minify - Fatal编程技术网

Javascript条件包含预缩减:是否存在这样的工具?

Javascript条件包含预缩减:是否存在这样的工具?,javascript,conditional-compilation,minify,Javascript,Conditional Compilation,Minify,我能找到的所有JS迷你程序都是通过消除空白、变量重命名和常规压缩的组合来工作的。然而,如果minifier知道模块中的哪些功能是项目所需的,那么就可以削减更多的功能 假设项目使用,但只使用导出的函数.isEmpty和.isArray。仔细看,迷你程序可能只包括.isEmpty,.isArray,.isString,和.hasOwnProperty 这样做可能需要标记模块源,以说明什么是什么,并表示模块内的依赖关系,例如: //{{ "_.isEmpty" depends "_.isArray",

我能找到的所有JS迷你程序都是通过消除空白、变量重命名和常规压缩的组合来工作的。然而,如果minifier知道模块中的哪些功能是项目所需的,那么就可以削减更多的功能

假设项目使用,但只使用导出的函数
.isEmpty
.isArray
。仔细看,迷你程序可能只包括
.isEmpty
.isArray
.isString
,和
.hasOwnProperty

这样做可能需要标记模块源,以说明什么是什么,并表示模块内的依赖关系,例如:

//{{ "_.isEmpty" depends "_.isArray", "_.isString", "_.hasOwnProperty"
_.isEmpty = function(obj) {
  if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
  for (var key in obj) if (hasOwnProperty.call(obj, key)) return false;
  return true;
};
//}}
然后可以运行
minify underline.js[“\u.isEmpty”、“\u.isArray”]
删除所有不需要的内容。或者,您可以在代码中包含相同的标记,以表示
underline.js
所需的部分,然后将代码与下划线绑定,并有条件地编译结果。在这两种情况下,您都可以在最后运行标准缩微器

如前所述,这甚至不是特定于JS的,因此某些东西必须存在于某个地方。一个更聪明的条件includer也许可以分析代码来检测依赖性,但这是一个困难的问题


我正在寻找一个JS“迷你程序”,它可以在依赖项注释的帮助下剪切死代码。这样的东西存在吗?

谷歌的“高级编译”功能可以满足您的需要——它解析您的JavaScript源代码并自动删除其死代码()。不过,缺点是你需要让它工作