`require`钩子在节点包中

时间:2015-03-08 23:35:36

标签: javascript node.js ecmascript-6

我正在构建一个包含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 require hook才能正常运行。

这使得index.js在此库中使用时可以正常工作(node index.js可以正常工作,以及测试等)。但是一旦我将项目用作另一个项目中的依赖项,require钩子就无法工作,因为es6语法而导致语法错误。

即使项目是

,如何使注册的钩子工作

1 个答案:

答案 0 :(得分:0)

这可能是与require()缓存相关的一些问题,但无论原因如何,您都不应该使用BABEL /在一个必需的图书馆中注册

来自Babel documentation

  

不适合图书馆

     

require钩子自动将自身挂钩到所有节点需要。这将污染全球范围并引入冲突。因此,它不适合图书馆,但如果您正在编写应用程序,那么使用它就完全没问题。