2016-02-05 62 views
5

我有一個npm包,我正在ES2015中編寫,並與Babel 6一起編譯。ES2015源代碼位於/src中,分爲/src/core,/src/commands等模塊。因爲它是一個CLI工具,所以入口點在/src/bin/app.js。如果我運行babel-node src/bin/app.js它按預期工作。Babel編譯JS無法導入相對路徑

理想情況下,我想在全球範圍內安裝此工具(如grunt-cli),因此我將整個包傳輸到一個有效的JS(ES5)文件,其中包含babel src -o /lib/app.js。但是,如果我嘗試運行該文件,則會嘗試從相對路徑請求模塊時引發錯誤,並且因爲它們全部合併到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"] 
} 
應該

這項工作,或者我需要配置通天塔多一些?備份計劃是簡單地將整個/src文件夾轉換爲/lib併發布所有內容,但單個文件會更好。

+0

複製的[這個問題](https://stackoverflow.com/questions/33963999/using-babel-with-a-single-output-file-and-es6-modules)與參考答案[這裏](HTTPS ://stackoverflow.com/questions/31873235/gulp-concat-and-require-path/33280669#33280669)。 – orlade

回答