У меня есть 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 ]