2016-10-14 3 views
5

У меня возникли проблемы с использованием команды run, предоставленной yarn, диспетчер пакетов Facebook для JavaScript.Неисправность «running run» на объекте scripts в package.json

В настоящее время в моем файле package.json у меня есть следующее для моего объекта scripts.

"scripts": { 
    "lint": "./node_modules/.bin/eslint --ignore-pattern dist ." 
} 

Когда я запускаю следующую команду, она работает, как ожидалось, npm run lint. Однако, когда я запускаю скрипт от yarn с yarn run lint, я получаю следующее сообщение об ошибке.

Petesta :: λ -> ~/Git/yarn yarn run lint 
yarn run v0.15.1 
$ "./node_modules/.bin/eslint --ignore-pattern dist ." 
sh: ./node_modules/.bin/eslint --ignore-pattern dist .: No such file or directory 
error Command failed with exit code 127. 
info Visit http://yarnpkg.com/en/docs/cli/run for documentation about this command. 

./node_modules/.bin каталог на моем $PATH, и я заметил, что если у вас есть исполняемый файл, как date или pwd то yarn run some_script_on_date будет работать, как ожидалось.

Один из способов заставить это работать - создать отдельный файл оболочки, содержащий команду, которую вы пытаетесь выполнить. Назовем это ./scripts/lint.sh.

#!/bin/bash 

./node_modules/.bin/eslint --ignore-pattern dist . 

А затем запустить эту команду на файл chmod +x ./scripts/lint.sh

Теперь в вашем scripts объекте добавьте следующую строку.

"new_lint": "./scripts/lint.sh" 

А теперь yarn run new_lint будет работать, как ожидалось.

Мне что-то не хватает или это так, как нужно создавать сценарии вызова в yarn? Я хотел бы запустить команду, как с npm.

ответ

3

Я нашел вопрос, который, я считаю, связан: https://github.com/yarnpkg/yarn/pull/809.

пряжа не понимала пробелов в сценариях npm. Думаю, это будет исправлено в следующем выпуске. Я могу воспроизвести проблему на своем компьютере (используя последнюю пряжу: 0.15.1).

Кстати, вам не нужно включать ./node_modules/.bin в свои сценарии npm. Оба НПМ и пряжа будет выглядеть внутри этой папки по умолчанию, как описано здесь: https://docs.npmjs.com/cli/run-script

Так что ваш сценарий может быть только: "lint": "eslint --ignore-pattern dist ."

+0

Я попробовал его с 'eslint' и он не работает. Команда не найдена. Это будет работать с 'npm run', но не с' нитью запуска '. – Petesta

+0

Буквально на днях, lol, пакет был назван 'yarnpkg' и совсем недавно устарел для' пряжи'. До этого устаревания команда запуска yarnpkg работала должным образом. Теперь с новым пакетом он не работает. – Petesta

+0

Ах, я неправильно понял. Просто нужно дождаться выхода. – Petesta

Смежные вопросы