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.
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