我在项目中使用Babel。问题是,我在server.js
:
import schema from "./data/schema";
(data/schema.js
采用ES2015语法)。
当我尝试用babel编译我的server.js
时,就像这样:
babel -o server_production.js --minified server.js
它生成一个没有错误的新文件,并用import
替换require
指令。但问题是,当我试图用server.js
运行我的babel编译的node
时,它抱怨data/schema.js
,因为它没有被转换成ES5,只需要(确切的)错误是Unexpected token "import"
,因为我在data/schema.js
)中使用了其他一些导入。
所以,问题是:如何将我的文件及其import
所有文件编译成一个文件?我试过babel -o server_production.js --minified data/schema.js server.js
,但这也不起作用。
答案 0 :(得分:6)
默认情况下,Babel不会捆绑依赖项。您需要使用rollup等模块捆绑包。
要执行此操作,您需要定义与此类似的rollup
配置:
<强> rollup.config.js 强>
import babel from 'rollup-plugin-babel';
import babelrc from 'babelrc-rollup';
export default {
entry: 'server.js',
dest: 'server_production.js',
plugins: [
babel(babelrc())
]
};
这适用于下面定义的package.json
文件:
{
"scripts": {
"rollup": "./node_modules/.bin/rollup -c"
},
"devDependencies": {
"babel-cli": "6.14.0",
"babel-plugin-external-helpers": "6.8.0",
"babel-preset-es2015": "6.14.0",
"babelrc-rollup": "3.0.0",
"rollup": "0.35.10",
"rollup-plugin-babel": "2.6.1"
}
}
执行命令npm run rollup -c
以捆绑和编译文件。
您将在此处找到一个示例:https://ide.c9.io/ifeanyidev/babel-rollup-example
答案 1 :(得分:-3)
您可以使用以下解决方案使用Babel将所有包含的文件编译为一个文件:
npx babel src --out-file script-compiled.js