如何使用Babel将所有包含的文件编译成一个?

时间:2016-09-13 13:55:28

标签: javascript node.js ecmascript-6 babel

我在项目中使用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,但这也不起作用。

2 个答案:

答案 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