【问题标题】:`require` hooks in a node package节点包中的 `require` 钩子
【发布时间】:2015-03-09 13:21:13
【问题描述】:

我正在构建一个包含一些 es6 代码的节点包,所以我想 使用 babel 热加载 es6 代码。

在我的index.js 我输入:

require('babel/register'); // register es6 transpolar for all following requires

module.exports = {
  foo: require('lib/foo')
, bar: require('lib/bar')
}

lib/foo 包含 es6 代码,因此需要 babel 要求钩子才能正常工作。

这使得index.js 在这个库中使用时可以正常工作(node index.js 工作,以及测试等)。但是,一旦我将该项目用作另一个项目中的依赖项,require 挂钩就无法工作,并且由于 es6 语法而出现语法错误。

即使项目是一个

,我怎样才能使注册的钩子工作

【问题讨论】:

    标签: javascript node.js ecmascript-6


    【解决方案1】:

    这可能是与require() 缓存相关的一些问题,但无论原因如何,您不应在所需的库中使用 BABEL/REGISTER

    来自Babel documentation

    不适合图书馆

    require 钩子会自动将自己钩入所有节点需求。这将污染全局范围并引入冲突。因此它不适合库,但是如果您正在编写应用程序,那么它完全可以使用。

    【讨论】:

    • 您可以“npm 链接”依赖项 - 在这种情况下它将被转译。 babel require hook 必须从主项目中调用(假设主项目也需要它),而不是依赖。在依赖项中,可以从测试中调用挂钩。你可以支持这个问题:github.com/babel/babel/issues/1110 :)
    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多