Npm установить глобальный bin из github, используя подмодуль "file" - PullRequest
0 голосов
/ 11 марта 2020

У меня есть NodeJS проект с несколькими подмодулями ...

Структура папки

./package.json
./server/package.json
./client/package.json

, а в root package.json у меня есть bin, который устанавливает / запускает CLI из пакета сервера.

{
  "name": "root",
  "version": "1.0.0",
  "bin": {
    "servercli": "server/index.js"
  },
  "dependencies": {
    "server": "file:server"
  }
}

Это прекрасно работает и позволяет мне установить servercli из папки root, используя npm i -g.

. проблема ...

Я хочу иметь возможность установить servercli напрямую из github (для коллег), например так:

npm i -g githubuser/myproject

Я пытался, но получаю следующее ошибка:

npm ERR! code ENOLOCAL
npm ERR! Could not install from "../../../../../usr/local/lib/node_modules/myproject/server" as it does not contain a package.json file.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/myname/.npm/_logs/2020-03-11T14_31_50_951Z-debug.log

Я проверил папку /usr/local/lib/node_modules/myproject/server, и она не существовала (и не было родительской).

Кто-нибудь может предложить решение?

(Поддерживает ли npm глобальная установка только проекты верхнего уровня? Похоже, npm делает git мелкую проверку ...?)

Полные журналы

$ cat /Users/myname/.npm/_logs/2020-03-11T14_31_50_951Z-debug.log
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/Cellar/node/11.14.0_1/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'i',
1 verbose cli   '-g',
1 verbose cli   'githubuser/myproject' ]
2 info using npm@6.14.2
3 info using node@v11.14.0
4 verbose npm-session 795716f8ad1d4bf4
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 info lifecycle myproject@1.0.0~prepack: myproject@1.0.0
8 info lifecycle myproject@1.0.0~postpack: myproject@1.0.0
9 silly pacote git manifest for undefined@github:githubuser/myproject fetched in 5537ms
10 timing stage:loadCurrentTree Completed in 5555ms
11 silly install loadIdealTree
12 silly install cloneCurrentTreeToIdealTree
13 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
14 silly install loadShrinkwrap
15 timing stage:loadIdealTree:loadShrinkwrap Completed in 2ms
16 silly install loadAllDepsIntoIdealTree
17 silly resolveWithNewModule myproject@1.0.0 checking installable status
18 silly fetchPackageMetaData error for server@file:server Could not install from "../../../../../usr/local/lib/node_modules/myproject/server" as it does not contain a package.json file.
19 timing stage:rollbackFailedOptional Completed in 1ms
20 timing stage:runTopLevelLifecycles Completed in 5565ms
21 verbose stack Error: ENOENT: no such file or directory, open '/usr/local/lib/node_modules/myproject/server/package.json'
22 verbose cwd /Users/myname/Documents/Workspace/githubuser
23 verbose Darwin 18.7.0
24 verbose argv "/usr/local/Cellar/node/11.14.0_1/bin/node" "/usr/local/bin/npm" "i" "-g" "githubuser/myproject"
25 verbose node v11.14.0
26 verbose npm  v6.14.2
27 error code ENOLOCAL
28 error Could not install from "../../../../../usr/local/lib/node_modules/myproject/server" as it does not contain a package.json file.
29 verbose exit [ 1, true ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...