假设我有一个项目想要使用 Lo-Dash 和 jQuery,但我不需要所有功能。
当然,这两个项目都有构建工具,因此我可以准确编译我需要的版本,以节省宝贵的带宽和解析时间,但我认为在本地安装它们,生成我的版本,然后将它们 checkin 我的存储库是非常不舒服和丑陋的。
我更愿意将他们的 grunt 流程集成到我自己的流程中,并随时创建自定义构建,这将更易于维护。
Lo-Dash 团队通过专用的 cli 提供此功能。甚至用 grunt task 包裹它。这确实非常好,但我想要一个解决这个问题的通用解决方案,因为没有必要让每个包作者都复制这个。
我试图通过 grunt-shell hackery 来实现这一目标,但据我所知,devDependency 的深度不可能超过一层,这使得执行所需的 grunt 任务不可能变得更加难看。
那么您对此有何看法,或者我应该将其移至 0.5.0 discussion咕噜声?
最佳答案
您所问的内容假设该包具有:
依赖 Grunt 来构建发行版;大多数流行的库都有这个,但一些不太常见的库可能仍然使用 shell 脚本或 npm run 命令进行一般缩小/压缩。
首先使用 Modernizr 或 Lo-Dash 等专用工具生成自定义构建的某种方法。
您也许可以用一个通用的函数来替换数字 2,该通用函数可以解析源代码和库代码,并使用代码覆盖率来消除库中不必要的函数。这已经在开发中(请参阅 goldmine ),但是我无法断言它有多好,因为我还没有使用过它。
此外,我不确定这在存在大量相互关联的依赖项的 AMD 环境中如何工作;理想情况下,您能够运行 r.js 优化器并获得用于生产的杏仁构建,然后过滤不必要的功能(很可能是 Istanbul 尔,然后必须确保过滤后的脚本通过了所有单元/集成测试)。不知道最终会是什么样子,但如果这能发生那就太酷了。 :-)
但是,有一个任务专门用于从“子 grunt 文件”运行 Grunt 任务,您可能想看看: grunt-subgrunt .
关于node.js - 有没有一种通用的方法来使用我的依赖项的 grunt 构建过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146546/