2015-07-03 3 views
3

Я обманывал с помощью Node и npm Packages в качестве приложений CLI. У меня есть проект с пакетом. Json, все правильно заполнено. Когда я запускаю приложение с разными аргументами через WebStorm, все работает отлично. Если я публикую пакет npm, однако ... нет зависимостей ... сайт npm не может найти его ... и когда я устанавливаю приложение CLI, он не работает, потому что да ... зависимости не вытягиваются ...NPM не публикует зависимости

Это мой package.json

{ 
    "name": "wmg", 
    "version": "0.0.8", 
    "description": "A Commandline Foolin around", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "https://github.com/Arvraepe/wmg.git" 
    }, 
    "keywords": ["Stuff", "Foolin"], 
    "target": "main", 
    "preferGlobal": true, 
    "bin": { 
    "wmg": "wmg.js" 
    }, 
    "author": "Arne Van Raepenbusch <[email protected]>", 
    "license": "ISC", 
    "devDependencies": { 
    "prompt": "^0.2.14", 
    "restify": "^3.0.3", 
    "underscore": "^1.8.3" 
    } 
} 

Я попытался запустить pakmanager DEPS, но дал мне эту странную ошибку

======================= WARNING ======================= 
Assuming browser mode by default is deprecated. 
    Include browserDependencies in your package.json 
    -- OR -- 
    pakmanager -e browser build 

In the next release of pakmanager, the node environment will be assumed as default 
======================================================= 


Targeted Environment: browser 
[[[deps]]] 
[ERROR] The following packages are `require`d, but not in the package, nor on npm: 
    wmg 
pakmanager {} 


======================= WARNING ======================= 
Assuming browser mode by default is deprecated. 
    Include browserDependencies in your package.json 
    -- OR -- 
    pakmanager -e browser build 

In the next release of pakmanager, the node environment will be assumed as default 
======================================================= 

Конечно, мой пакет не должен зависеть на себя?

Может ли кто-то пролить свет на это?

+0

ПРЕДЛОЖЕНИЯ: 1) Разделите и победите: попробуйте другой, * минимальный * package.json, чтобы узнать, можете ли вы изолировать проблему. 2) Посмотрите [здесь] (http://stackoverflow.com/questions/22343224/difference-between-tilde-and-caret-in-package-json) для возможных проблем с синтаксисом версии. 3) Посмотрите [здесь] (http://stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies) для возможных проблем с «зависимостями» и «devDependencies». Удачи - и, пожалуйста, напишите назад, что вы найдете! – paulsm4

ответ

1

Я посмотрел на ваш пакет, и, как другие отметили, вы указали devDependencies, но не dependencies. Обычно devDependencies предназначен для таких вещей, как тестовые рамки, которые вам нужно для работы с пакетом, но не для его использования. Оба prompt и restify используются в вашем приложении и должны быть указаны в объекте dependencies вместо devDependencies.

+0

Возможно, это связано с тем, что я использовал, например, запрос на установку NPM --save-dev ...? Когда я смотрел на пакеты узлов, все они помещали --save-dev в конец, чтобы сохранить его в файле пакета ... Я думал, что это достаточно хорошо. То, что вы говорите, имеет смысл. – Arninja

+1

@Arninja: для реальных зависимостей используйте --save вместо --save-dev – slebetman

+0

Я понял это сейчас. Это настолько очевидно, что это становится смущающим ;-), но все, что заканчивается хорошо, хорошо. Спасибо за помощь, информацию и советы! – Arninja

1

В файле package.json нет зависимостей. Только devDependencies, которые npm предполагает, требуется только для разработки (например, мокко) и не требуются для установки.

Если какая-либо из ваших devDependencies является фактической зависимостью пользователя, переместите их в зависимости.

+0

Вы правы! Однако я не мог установить два ответа как фиксированные ... спасибо за ваше время! – Arninja

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