Вопрос по node.js – сгенерированная npm команда не вызывает узел

2

Я пытаюсь создать утилиту командной строки node.js и у меня возникла проблема с оберткой, которую генерирует npm. Моя супер-простая демонстрация - это файл package.json:

{
    "name": "demo-cli",
    "version": "0.0.1",
    "bin": { "demo": "bin/demo-cli.js" }
}

И файл demo-cli.js:

console.log('DEMO WORKED');

Вопрос в том, когда я устанавливаю модуль с помощьюnpm install -g в то время как в каталоге проекта генерируемая оболочка не вызывает узел с файлом в качестве параметра. Это сгенерированное содержимое demo.cmd:

:: Created by npm, please don't edit manually.
"%~dp0\.\node_modules\demo-cli\bin\demo-cli.js"   %*

Версия Unix имеет ту же проблему. Глядя на другой глобально установленный CLI, я вижу, что узел тестируется и вызывается, как и ожидалось.

:: Created by npm, please don't edit manually.
@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\.\node_modules\mocha\bin\mocha" %*
) ELSE (
  node  "%~dp0\.\node_modules\mocha\bin\mocha" %*
)

Какой секретный соус нужен для npm для создания правильного файла сценария? Я перепробовал все, что смог найти или подумать, включая удаление расширения .js, предпочтение global, указание версии узла ... не повезло.

Я использую узел v0.6.18 и npm v1.1.21 в Windows 7 x64.

Ваш Ответ

1   ответ
7

Попробуйте положить

#!/usr/bin/env node

В верхней части вашегоdemo-cli.js файл.

На окнах,npm ищет эту линию Шебанга при создании.cmd обертка. УвидетьCMD-shim.js вnpm источник для получения дополнительной информации.

Это добилось цели. Я подумал, что чего-то не хватает. Спасибо! John Clayton

Похожие вопросы