2015-03-19 2 views
0

У меня есть небольшое приложение node.js «doto», которое я хочу npm link, так что я могу просто позвонить doto в любом месте. На моем понимании все, что мне нужно сделать, это:Команда не найдена после npm link

mkdir doto 
cd doto 
npm init #call the project doto and entry point doto.js 
touch doto.js #fill with some code 
npm link 

node doto.js работает нормально, но когда я соединяю пакет и попытаться вызвать doto, команда не найдена. Связывание прошло отлично, мне пришлось использовать sudo (да, я знаю, что должен настроить узел таким образом, чтобы мне не нужно sudo, но пока я просто хочу, чтобы мои ноги были мокрыми)

Всякий раз, когда я устанавливаю пакет по всему миру, Я могу назвать это просто отлично.

Я бегу mac os 10.10.

doto.js

#!/usr/bin/env node 

var path = require('path'); 
var pkg = require(path.join(__dirname, 'package.json')); 

var program = require('commander'); 

program 
    .version(pkg.version) 
    .option('-p, --port <port>', 'Port on which to listen to (defaults to 3000)', parseInt) 
    .parse(process.argv); 

console.log(program.port); 

package.json

{ 
    "name": "doto", 
    "version": "0.0.1", 
    "description": "", 
    "main": "doto.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "commander": "~2.7.1" 
    } 
} 

Что мне не хватает?

ответ

3

Я думаю, что ваш package.json отсутствует раздел BIN, according to the docs он должен стать чем-то вроде:

{ 
    "name": "doto", 
    "version": "0.0.1", 
    "description": "", 
    "main": "doto.js", 
    // specify a bin attribute so you could call your module 
    "bin": { 
    "doto": "./doto.js" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "commander": "~2.7.1" 
    } 
} 

Так после того, как вы запустите sudo npm link вы можете запустить doto из любой точки мира, если вы хотите изменить имя исполняемый файл просто меняет ключ под «bin» на все, что вы предпочитаете.

+0

Смотрите, иногда я чувствую себя очень глупо :) Спасибо большое! – rootman

+0

Я рад, что помог; D Не забудьте прогнать, пожалуйста. –

+0

спасибо !! вот мой взлет! : D – Mihir

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