node.js - 有没有一种通用的方法来使用我的依赖项的 grunt 构建过程?

标签 node.js build npm gruntjs

假设我有一个项目想要使用 Lo-Dash 和 jQuery,但我不需要所有功能。

当然,这两个项目都有构建工具,因此我可以准确编译我需要的版本,以节省宝贵的带宽和解析时间,但我认为在本地安装它们,生成我的版本,然后将它们 checkin 我的存储库是非常不舒服和丑陋的。

我更愿意将他们的 grunt 流程集成到我自己的流程中,并随时创建自定义构建,这将更易于维护。

Lo-Dash 团队通过专用的 cli 提供此功能。甚至用 grunt task 包裹它。这确实非常好,但我想要一个解决这个问题的通用解决方案,因为没有必要让每个包作者都复制这个。

我试图通过 grunt-shell hackery 来实现这一目标,但据我所知,devDependency 的深度不可能超过一层,这使得执行所需的 grunt 任务不可能变得更加难看。

那么您对此有何看法,或者我应该将其移至 0.5.0 discussion咕噜声?

最佳答案

您所问的内容假设该包具有:

  1. 依赖 Grunt 来构建发行版;大多数流行的库都有这个,但一些不太常见的库可能仍然使用 shell 脚本或 npm run 命令进行一般缩小/压缩。

  2. 首先使用 Modernizr 或 Lo-Dash 等专用工具生成自定义构建的某种方法。

您也许可以用一个通用的函数来替换数字 2,该通用函数可以解析源代码和库代码,并使用代码覆盖率来消除库中不必要的函数。这已经在开发中(请参阅 goldmine ),但是我无法断言它有多好,因为我还没有使用过它。

此外,我不确定这在存在大量相互关联的依赖项的 AMD 环境中如何工作;理想情况下,您能够运行 r.js 优化器并获得用于生产的杏仁构建,然后过滤不必要的功能(很可能是 Istanbul 尔,然后必须确保过滤后的脚本通过了所有单元/集成测试)。不知道最终会是什么样子,但如果这能发生那就太酷了。 :-)

但是,有一个任务专门用于从“子 grunt 文件”运行 Grunt 任务,您可能想看看: grunt-subgrunt .

关于node.js - 有没有一种通用的方法来使用我的依赖项的 grunt 构建过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146546/

相关文章:

javascript - 为什么我的代码发送邮件两次?

node.js - $unset 在 Mongoose 中不起作用

visual-studio-2010 - Visual Studio, MSBuild : First build after a clean fails, 以下构建成功

build - 寻找 .NET BuildServer SaaS

c++ - 当我在 .cpp 文件中复制#include 时会发生什么

javascript - 错误 : bundling failed: Error: Unable to resolve module `react-native-vector-icons/Feather`

node.js - 如何为 `npm init` 设置默认测试命令?

javascript - 使用 Browserify 构建 npm - 错误 : Cannot find module

mysql - 使用事务和使用限制对 findAll 查询进行后续处理并抵消其不起作用

javascript - 访问 Promise 链中的外部变量