it-swarm.com.ru

Невозможно запустить babel через скрипт npm "babel: команда не найдена"

Для начала я побежал:

npm install --save-dev babel-cli
npm install --save-dev babel-preset-es2015
npm install --save-dev babel-preset-stage-0 

Вот мой package.json:

   {
      "scripts": {
        "build": "babel src -d dist"
      },
      "devDependencies": {
        "babel-cli": "^6.6.5",
        "babel-core": "^6.7.2",
        "babel-preset-es2015": "^6.6.0",
        "babel-preset-stage-0": "^6.5.0"
      }
    }

Вот мой файл .babelrc:

{
  "presets": ["es2015", "stage-0"]
}

Моя файловая структура выглядит так:

- Root
    - src
        - client 
        - server
        - test  
    - dist 
    - package.json

Я называю npm run build из корневой папки. Я ожидаю, что он скомпилирует исходную папку в папку dist. Он запускается, а затем я получаю эту ошибку:

> babel src -d dist

sh: babel: command not found

npm ERR! Darwin 15.2.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build"
npm ERR! node v5.8.0
npm ERR! npm  v3.7.3
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email protected] build: `babel src -d dist`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the [email protected] build script 'babel src -d dist'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the redacted package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     babel src -d dist
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs redacted
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls redacted
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/user/redacted/npm-debug.log

Итак, как вы можете видеть, я установил babel-cli, я установил пресеты, и я думаю, что все в порядке в соответствии с документами babel. 

У кого-нибудь есть идеи о том, почему это не будет работать? Могу ли я пропустить файл Babel Npm? "Babel src -d dist" неверен? 

Спасибо за любую помощь, вы можете предоставить!

Я сделал другую папку и выполнил те же шаги, она отлично работала. По какой-то причине он не работает в этом каталоге.

15
Justin

Вы запускали «npm install» для установки пакетов dev?

3
s.xie

Я сталкивался с той же проблемой в последнее время. Удаление папки node_modules и повторный запуск npm install больше не решают проблему. 

Причина, по которой вы получаете эту ошибку, заключается в том, что babel-cli нужно устанавливать глобально, а не как зависимость проекта.

Запустите npm install -g babel-cli, чтобы установить его глобально.

Затем Babel-preset-es2015 можно установить как зависимость для ваших проектов npm install --save-dev babel-preset-es2015

12
tom

Вы никогда не должны устанавливать babel-cli во всем мире - на самом деле, у них конкретно есть целый параграф, в котором говорится, что не надо из их официальных документов. 

Отредактируйте package.json >> добавьте скрипт с ключом, скажем, build со значением ./node_modules/.bin/babel <commands>

Если вы назвали его build, просто введите npm run build.

10
dylanh724

Ошибка возникает потому, что ./node_modules/.bin отсутствует в $PATH. ./node_modules/.bin - это место, где можно найти все исполняемые файлы.

В соответствии с рекомендациями документации , вы можете ссылаться на babel cli внутри node_modules:

$ ./node_modules/.bin/babel src -d lib

Вы можете изменить команду npm run build, чтобы использовать это:

"scripts": {
    "build": "./node_modules/.bin/babel src -d dist"
},
6
gnerkus

Многие из ответов выше верны.

Ошибка возникает потому, что ./node_modules/.bin отсутствует в $PATH. ./node_modules/.bin - это место, где можно найти все исполняемые файлы.

Я сделал простую функцию динамического псевдонима в своем файле zshrc.

# Babel
function bbl() {
    ./node_modules/.bin/babel "[email protected]"
}

Теперь вы можете использовать bbl вместо babel

bbl --version
6.24.1 (babel-core 6.25.0)
0
Ahmad Awais