Node.js 如何在node CLI程序中使用babel?

Node.js 如何在node CLI程序中使用babel?,node.js,command-line-interface,ecmascript-6,babeljs,Node.js,Command Line Interface,Ecmascript 6,Babeljs,我正在node中编写一个小型CLI工具,并希望使用ES6实现这一点 index.js看起来像: #!/usr/bin/env node require('babel/register'); module.exports = require('./app'); 我可以使用 $ node index.js --foo some --bar thing 在我的package.json中,我声明如下: "bin": { "my-tool": "./index.js" } 在安装和

我正在node中编写一个小型CLI工具,并希望使用ES6实现这一点

index.js看起来像:

#!/usr/bin/env node

require('babel/register');
module.exports = require('./app');
我可以使用

$ node index.js --foo some --bar thing
在我的
package.json
中,我声明如下:

  "bin": {
    "my-tool": "./index.js"
  }
在安装和执行此功能时,babel似乎没有像我所看到的那样工作:

/usr/lib/node_modules/my-tool/app.es6:1
(function (exports, require, module, __filename, __dirname) { import yargs fro
                                                          ^^^^^^
SyntaxError: Unexpected reserved word

我在这里遗漏了什么?

require钩子更多的是用于本地开发,而不是用于生产。理想情况下,您应该在分发包之前进行预编译。你遇到了麻烦

您需要显式地告诉寄存器挂钩不要忽略您的应用程序

require('babel/register')({
  ignore: /node_modules\/(?!my-tool)/
});

require钩子更多的是用于本地开发,而不是用于生产。理想情况下,您应该在分发包之前进行预编译。你遇到了麻烦

您需要显式地告诉寄存器挂钩不要忽略您的应用程序

require('babel/register')({
  ignore: /node_modules\/(?!my-tool)/
});

require钩子更多的是用于本地开发,而不是用于生产。理想情况下,您应该在分发包之前进行预编译。你遇到了麻烦

您需要显式地告诉寄存器挂钩不要忽略您的应用程序

require('babel/register')({
  ignore: /node_modules\/(?!my-tool)/
});

require钩子更多的是用于本地开发,而不是用于生产。理想情况下,您应该在分发包之前进行预编译。你遇到了麻烦

您需要显式地告诉寄存器挂钩不要忽略您的应用程序

require('babel/register')({
  ignore: /node_modules\/(?!my-tool)/
});

不知道为什么会发生这种情况(我可以复制)。作为一个快速解决方案,也许您可以使用
#/usr/bin/env babel node
?我不认为babel的即时编译可以与模块语法一起工作。然后我根本不明白它做了什么:当通过
节点索引.js
(工作)和
我的工具
(不工作)调用时,有什么不同?不确定为什么会发生这种情况(我可以复制)。作为一个快速解决方案,也许您可以使用
#/usr/bin/env babel node
?我不认为babel的即时编译可以与模块语法一起工作。然后我根本不明白它做了什么:当通过
节点索引.js
(工作)和
我的工具
(不工作)调用时,有什么不同?不确定为什么会发生这种情况(我可以复制)。作为一个快速解决方案,也许您可以使用
#/usr/bin/env babel node
?我不认为babel的即时编译可以与模块语法一起工作。然后我根本不明白它做了什么:当通过
节点索引.js
(工作)和
我的工具
(不工作)调用时,有什么不同?不确定为什么会发生这种情况(我可以复制)。作为一个快速解决方案,也许您可以使用
#/usr/bin/env babel node
?我不认为babel的即时编译可以与模块语法一起工作。然后我根本不明白它做了什么:当通过
节点索引.js调用时(工作)和
我的工具
(不工作)有什么区别?