【发布时间】:2016-02-05 08:15:06
【问题描述】:
我有一个 npm 包,我在 ES2015 中编写并使用 Babel 6 进行转译。ES2015 源代码在 /src 中,在 /src/core、/src/commands 中拆分为模块,等等。因为它是一个 CLI 工具,所以入口点在/src/bin/app.js。如果我运行babel-node src/bin/app.js,它会按预期工作。
理想情况下,我想在全局范围内安装此工具(如grunt-cli),因此我将整个包转译为带有babel src -o /lib/app.js 的单个有效JS (ES5) 文件。但是,如果我尝试运行该文件,则会引发错误,尝试从相对路径中要求模块,并且无法找到这些模块,因为它们都合并到 app.js 中。错误是:
$ node_modules/babel-cli/bin/babel-node.js lib/app
module.js:328
throw err;
^
Error: Cannot find module '../commands/index'
at Function.Module._resolveFilename (module.js:326:15)
at Function.Module._load (module.js:277:25)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/usr/local/lib/node_modules/app/lib/app.js:19:14)
at Module._compile (module.js:398:26)
at Module._extensions..js (module.js:405:10)
at Object.require.extensions.(anonymous function) [as .js] (/Users/me/dev/app/node_modules/babel-register/lib/node.js:138:7)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
我的.babelrc 很简单:
{
"presets": ["es2015"]
}
这应该可行,还是我需要再配置一些 Babel?备份计划是简单地将整个 /src 文件夹转换为 /lib 并发布所有内容,但单个文件会更好。
【问题讨论】:
-
重复的this question 和引用的答案here。
标签: javascript node.js babeljs