假设我有一个项目,我想使用Lo-Dash和jQuery,但我不需要所有功能。
当然,这两个项目都有构建工具,所以我可以准确编译我需要的版本以节省宝贵的带宽和解析时间,但我认为在本地安装它们,生成我的版本然后检查它们是非常不舒服和丑陋的它进入我的存储库。
我更愿意将他们的grunt流程集成到我自己的流程中并随时随地创建自定义构建,这将更加可维护。
Lo-Dash团队使用专用cli提供此功能,甚至用grunt task包裹它。这确实非常好,但我想要一个针对这个问题的通用解决方案,因为没有必要让每个包作者都复制它。
我尝试用grunt-shell hackery以某种方式实现这一点,但据我所知,devDependencies不可能超过一个级别深度,这使得不可能更难以执行所需的咕噜咕噜的任务。
那么您对此有何看法,或者我应该将其移至0.5.0 discussion的咕噜声?
答案 0 :(得分:3)
你问的是假设包裹有:
依赖Grunt构建分发版;大多数流行的库都有这个,但是一些不太常见的库仍然可以使用shell脚本或npm run命令进行一般缩小/压缩。
首先使用Modernizr或Lo-Dash等专用工具生成自定义构建的方法有。
您也许可以用一个解析源代码和库代码的通用代码替换数字2,并使用代码覆盖来消除库中不必要的函数。这已经在开发中(参见goldmine),但是我不能说这有多好,因为我没有使用它。
另外,我不确定在具有大量互连依赖关系的AMD上下文中它是如何工作的;理想情况下,您可以运行r.js优化器并获得用于生产的杏仁构建,然后针对不必要的函数过滤(很可能是伊斯坦布尔,然后必须确保过滤后的脚本通过了所有单元/集成测试)。不知道最终会如何看,但如果可能发生这种情况会很酷。 : - )
但是,有一项任务尤其适用于从'sub-gruntfiles'运行Grunt任务,您可能希望查看这些任务:grunt-subgrunt。