Node.js Babel构build和npm模块别名
我使用模块别名为我的Node.js + Express.js项目,运行与Babel ES2015支持。
当使用babel-node
开始时,应用程序是完美的,但是,如果我先用babel
(来自package.json
)构build它:
"build": "babel ./app --out-dir ./app_dist"
然后开始:
"start": "node ./app_dist/bin/www"
它显然找不到使用模块别名指定的正确path。 Node.js不是查看app_dist
,而是在app
search导入,find它不理解并引发的ES2015 import
指令:
SyntaxError:意外的标记导入
如果我在构build开始之前更改别名,从app
到app_dist
,它的工作原理,但问题是,如何映射这些别名(或如何使用不同的_moduleAliases
configuration),以便应用程序在开发和生产上正确parsingpath?
也许有另一种方式来与这样的堆栈模块别名? 提前致谢。
find解决这个问题的方法。
为了设置模块别名的相对path别名,它们不是在package.json
定义的,而是在根目录中的JavaScript文件中定义的,它将被Babel转换。
在我的情况下,像这样在config
目录中创build一个aliases.js
脚本:
import path from 'path'; import moduleAlias from 'module-alias'; moduleAlias.addAlias('@root', path.resolve(__dirname, '../../'));
将导致path相对于当前工作目录解决,解决了所描述的问题。