我正在使用Node和ES6编写CLI。我选择使用Babel的require钩子,我的输入文件看起来像这样(index.js
):
#!/usr/bin/env node
require('babel-core/register');
require('babel-polyfill');
require('./lib');
和package.json
的命令指向该文件:
"bin": {
"atlas": "./index.js"
},
开发时一切都很完美,我可以在本地运行脚本。在NPM上发布并使用--global
进行安装后,我收到有关ES6 import
语句的以下错误:
~ atlas login
/usr/local/lib/node_modules/atlas-cli/lib/index.js:1
(function (exports, require, module, __filename, __dirname) { import program from 'commander';
^^^^^^
SyntaxError: Unexpected token import
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:528:28)
at Module._extensions..js (module.js:565:10)
at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/atlas-cli/node_modules/babel-register/lib/node.js:154:7)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.require (module.js:483:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/usr/local/lib/node_modules/atlas-cli/index.js:10:1)
由于符号链接或类似问题,看起来Babel没有加载.babelrc
。如果我在安装目录(/usr/local/lib/node_modules/atlas-cli
)中运行该命令,该命令就可以正常工作。
该软件包的完整代码可用here。