2016-09-13 89 views
4

我在我的項目中使用了Babel。關鍵是,我在我的server.js這行代碼:如何使用Babel將所有包含的文件編譯成一個文件?

import schema from "./data/schema"; 

data/schema.js是ES2015語法)。

當我試圖編譯我server.js與巴貝爾,像這樣:

babel -o server_production.js --minified server.js 

它會產生一個新的文件沒有錯誤和替換requireimport指令。但事情是,當我試圖運行我的babel編譯server.jsnode,它抱怨data/schema.js,因爲它沒有轉譯成ES5,只需要(確切的錯誤是Unexpected token "import",因爲我使用一些其他進口data/schema.js)。

所以,問題是:我怎樣才能將我的文件和所有文件import s編譯成一個文件?我試過babel -o server_production.js --minified data/schema.js server.js,但那也沒用。

+2

我不認爲巴別做依賴分析。你必須指定你想要轉換的所有文件。 –

回答

5

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

+0

太棒了,謝謝! – serge1peshcoff

+0

'npm run rollup'就足夠了 – haffla

0

我建議儘量包住你的Maven項目進入maven-wrapper版本

之後,將所有你需要的是調用mvnw和包裝將下載的Maven ,設置它並做這件事。

我不能說更多,因爲我沒有XP,但它可以是一個解決方案。

相關問題