直接从node.js而不是CLI运行Brunch.io

时间:2017-01-20 08:36:15

标签: javascript node.js brunch

我正在寻找一个更有效的构建工具,如gulp for huge Projects。

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

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

1 个答案:

答案 0 :(得分:0)

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

INIT-骨架

我们内部有Brunch用于Brunch的软件包。它被称为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可以改变(显然是很好),所以要小心使用它。

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

  1. new method使用init-skeleton来支持新项目。
  2. build method为建筑项目运行Brunch一次。
  3. watch method运行Brunch观察器进行增量构建。
  4. buildwatch可能对您有用。他们都使用start function。此函数已封装以供内部使用,并具有以下签名:start(persistent, arg2, arg3)。这里:

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

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

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

    希望这会对你有所帮助。