2016-02-05 6 views
5

Mam pakiet npm, który piszę w ES2015 i transponuję z Babel 6. Kod źródłowy ES2015 jest w /src, podzielony na moduły w /src/core, /src/commands i tak dalej. Ponieważ jest to narzędzie CLI, punktem wejścia jest /src/bin/app.js. Jeśli uruchomię babel-node src/bin/app.js, to działa zgodnie z oczekiwaniami.Babel skompilowany JS nie importuje ścieżek względnych

Idealnie, chciałbym zainstalować to narzędzie globalnie (jak grunt-cli), więc przenosimy cały pakiet do pojedynczego, prawidłowego pliku JS (ES5) z babel src -o /lib/app.js. Jednakże, jeśli spróbuję uruchomić plik, powstaje błąd, który próbuje wymagać modułów od względnych ścieżek, a modułów tych nie można znaleźć, ponieważ wszystkie zostały połączone w app.js. Błąd jest:

$ 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) 

My .babelrc jest prosta:

{ 
    "presets": ["es2015"] 
} 

To powinno działać, czy trzeba skonfigurować Babel więcej? Plan tworzenia kopii zapasowych ma na celu po prostu przeniesienie całego folderu /src do /lib i opublikowanie wszystkiego, ale jeden plik będzie ładniejszy.

+0

Duplikat [tego pytania] (https://stackoverflow.com/questions/33963999/using-babel-with-a-single-output-file-and-es6-modules) z odpowiedzią referencyjną [tutaj] (https : //stackoverflow.com/questions/31873235/gulp-concat-and-require-path/33280669#33280669). – orlade

Odpowiedz