【问题标题】:Running Brunch.io directly from node.js rather than CLI直接从 node.js 而不是 CLI 运行 Brunch.io
【发布时间】:2017-01-28 06:16:20
【问题描述】:

我正在为大型项目寻找更高效的构建工具,例如 gulp。

Brunch 似乎就是这样,但我想知道是否可以从 Node.js 脚本而不是 CLI 运行 Brunch。 文档似乎没有任何详细信息……。

是否有任何计划或未记录的方式来存档?

【问题讨论】:

  • 嗨,你能解释一下为什么你需要这种行为吗?或许,我们可以帮助您找到更好的解决方案。
  • 我们在工作中需要一个新的构建工具,主要是出于性能原因,出于各种原因使用帮助脚本概括每个项目,这也控制了前端构建。我们动态生成 final 配置,具体取决于 CMS 实例上的哪个站点、哪些文件关系以及应该将哪个框架注入到所需 JS/CSS 和其他资产的构建中。它还考虑了 CMS 实例的哪些扩展是活动的,以及是否为页面优化遗漏了一些文件。
  • 最好只创建最终配置(这会很大)并给它早午餐,而不是写出文件,执行命令然后希望退出代码是正确的。
  • 我不明白为什么你不能只写一次配置。例如,您可以使用我们的早午餐骨架来自动生成它们。就个人而言,我认为你的想法有问题。据我了解,您需要某种 JavaScript API。无论如何,请给我一分钟,我将描述我们未记录的 API 以帮助您。

标签: javascript node.js brunch


【解决方案1】:

我仍然不清楚原因,但无论如何,这里有两种方法可以满足您的需求。

初始化骨架

我们有很棒的包,在内部用于早午餐。它被称为init-skeleton。您可以根据自己的需要编写一个骨架,并将该包用于搭建脚手架。

这个包有init 方法可以帮助你。它有这个签名init(skeleton[, options])skeleton 可能是:

  • 文件系统中骨架的路径
  • Git URI
  • GitHub URI(如gh:user/projectgithub:user/project

options 是可选的。有这些:

  • rootPath — 结果目录的根路径字符串
  • commandName — 一个字符串,它是一个将在 printBanner function 中使用的命令。
  • logger — 用于记录目的的函数。

例如:

const initSkeleton = require('init-skeleton').init

initSkeleton('path/to/skeleton')
  .then(() => {
    console.log('Done!')

    // do something else
    // ...
  })

如果这不是您想要的,那么还有另一种解决方案 - 使用 Brunch JavaScript API。

早午餐 JavaScript API

是的,这可能就是您要找的。早午餐有内部 JavaScript API。此 API 未记录在案。这个 API 可以改变(而且显然是可以改变的),所以要小心使用它。

您可能已经注意到早午餐的package.jsonmain field that corresponds to ./lib/index。这导出了三个方法(实际上对应于Brunch's commands):

  1. new method 使用 init-skeleton 搭建新项目。
  2. build method 运行一次构建项目的早午餐。
  3. watch method 为增量构建运行早午餐观察程序。

buildwatch 可能对您有用。他们都使用start function。该函数封装供内部使用,签名如下:start(persistent, arg2, arg3)。这里:

此外,您还可以要求 brunch/lib/cli 模块。该模块导出a run method。此方法不带任何参数。它只是解析process.argv 并正确运行早午餐。

就是这样。它可能看起来像一个黑客,它确实如此。请小心使用它,因为我们将来会更改该 API。请记住,这些可能性未记录在案,因此我们不会在更改前警告您

尝试为您的问题找到另一种解决方案。有时问题的出现不是因为问题本身,而是因为对您使用的方法的理解不正确。

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2018-01-02
    • 2020-12-29
    • 1970-01-01
    • 2017-10-06
    • 2023-01-12
    • 2013-03-07
    相关资源
    最近更新 更多