Ключевые моменты:
- Требование: устанавливаемый пакет
npm install -g
(так как это потребуется для нескольких приложений и фоновых / пакетных процессов) - Пакет является частью ( в настоящее время публикуется c) организация и в настоящее время доступна как:
@asux.org/cli-npm
.
Имеет 2 популярных зависимости: "мел" и "командир"
Проблема:
1. npm install -g @asux.org/cli-npm
НЕ выполняет автоматически npm install -g <dependencies..>
2. it на самом деле помещает зависимости в (npm root -g)/@asux.org/cli-npm/node_modules
3. В моем коде require("commander")
завершается с очевидной ошибкой.
Я даже пытался проверить его вручную в командной строке node
.
Error: Cannot find module 'commander'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
at Function.Module._load (internal/modules/cjs/loader.js:520:25)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
Мой обходной путь включает в себя два этапа:
1. Установите зависимости вручную после установки пакета. Глупо! Зачем беспокоиться об указании зависимостей в пакете. json, когда используется что-то, называемое "Node Package Manager "!
2. Вручную go вокруг настройки export NODE_PATH=(npm root -g)
(к вашему сведению: не может отображаться обратные пометки здесь).
К вашему сведению: установка и удаление работает чисто.
ВОПРОСЫ:
- ТОЛЬКО "правильный" способ .. связать все (включая зависимости) вместе? Если да, то какие-нибудь указатели?
- Любой другой "правильный" способ автоматически установить все зависимости?
- Как правильно установить Node + NPM, так что мне не нужно делать что-то столь фундаментально и фундаментально c, как:
export NODE_PATH=(npm root -g)
? (К вашему сведению: здесь не могут быть пометки).
Вот пакет. json
{
"name": "@asux.org/cli-npm",
"version": "1.9.0",
"private": false,
"publishConfig": {
"access": "public",
"tag": "latest"
},
"dependencies": {
"chalk": "*",
"commander": "2.20.0"
},
"engines": {
"node": ">=10.2.2"
},
..
К вашему сведению: "DEFAULT" npm root -g
производит (в пределах /tmp
текущая рабочая папка):
> module.paths
[ '/private/tmp/repl/node_modules',
'/private/tmp/node_modules',
'/private/node_modules',
'/node_modules',
'/Users/Sarma/.node_modules',
'/Users/Sarma/.node_libraries',
'/usr/local/Cellar/node/10.2.1/lib/node' ]
Я надеюсь, что это действительно очень глупо, что я делаю .. Потому что в противном случае это означает, что весь package.json / npm МЕХАНИЗМ слишком глупо, когда кто-то объясняет другим, что происходит, черт возьми.