Как локально установить модуль узла вне каталога node_modules? - PullRequest
0 голосов
/ 22 марта 2019

Чтобы развернуть докеризованную службу, написанную на NodeJS, мне нужно предоставить ее плагины в отдельной папке.Структура должна выглядеть следующим образом:

# plugin
/verdaccio/plugins/verdaccio-ldap
/verdaccio/plugins/verdaccio-ldap/package.json
/verdaccio/plugins/verdaccio-ldap/CHANGELOG.md
/verdaccio/plugins/verdaccio-ldap/index.js
/verdaccio/plugins/verdaccio-ldap/LICENSE
/verdaccio/plugins/verdaccio-ldap/README.md
# dependencies
/verdaccio/plugins/verdaccio-ldap/node_modules/.bin/ldapjs-add
/verdaccio/plugins/verdaccio-ldap/node_modules/.bin/ldapjs-compare
/verdaccio/plugins/verdaccio-ldap/node_modules/.bin/ldapjs-delete
/verdaccio/plugins/verdaccio-ldap/node_modules/.bin/ldapjs-modify
/verdaccio/plugins/verdaccio-ldap/node_modules/.bin/ldapjs-search
/verdaccio/plugins/verdaccio-ldap/node_modules/@types/ldapjs
/verdaccio/plugins/verdaccio-ldap/node_modules/@types/ldapjs/LICENSE
/verdaccio/plugins/verdaccio-ldap/node_modules/@types/ldapjs/README.md
/verdaccio/plugins/verdaccio-ldap/node_modules/@types/ldapjs/index.d.ts
/verdaccio/plugins/verdaccio-ldap/node_modules/@types/ldapjs/package.json

# rest ommited

Однако, когда я пытаюсь установить его, используя npm install verdaccio-ldap --prefix /verdaccio/plugins, это выглядит так:

# plugin
/verdaccio/plugins/node_modules/verdaccio-ldap
/verdaccio/plugins/node_modules/verdaccio-ldap/package.json
/verdaccio/plugins/node_modules/verdaccio-ldap/CHANGELOG.md
/verdaccio/plugins/node_modules/verdaccio-ldap/index.js
/verdaccio/plugins/node_modules/verdaccio-ldap/LICENSE
/verdaccio/plugins/node_modules/verdaccio-ldap/README.md
# dependencies
/verdaccio/plugins/node_modules/.bin/ldapjs-add
/verdaccio/plugins/node_modules/.bin/ldapjs-compare
/verdaccio/plugins/node_modules/.bin/ldapjs-delete
/verdaccio/plugins/node_modules/.bin/ldapjs-modify
/verdaccio/plugins/node_modules/.bin/ldapjs-search
/verdaccio/plugins/node_modules/@types/ldapjs
/verdaccio/plugins/node_modules/@types/ldapjs/LICENSE
/verdaccio/plugins/node_modules/@types/ldapjs/README.md
/verdaccio/plugins/node_modules/@types/ldapjs/index.d.ts
/verdaccio/plugins/node_modules/@types/ldapjs/package.json

# rest omitted

Может ли npm install справиться с этим как-нибудь?Если нет, я могу просто mv каталоги туда, где они мне нужны, не нарушая зависимости?

1 Ответ

0 голосов
/ 22 марта 2019

Согласно документации npm-install , вы можете использовать --global-style, что заставит npm установить пакет в вашу локальную папку node_modules с тем же макетом, который он использует с глобальной папкой node_modules.Зависимости вашего пакета и всего, от чего они зависят, будут сведены в их папку node_modules.

Нельзя предотвратить создание node_modules с помощью npm-install, но макет будет выглядеть следующим образом:

# plugin
/verdaccio/plugins/node_modules/verdaccio-ldap
/verdaccio/plugins/node_modules/verdaccio-ldap/package.json
/verdaccio/plugins/node_modules/verdaccio-ldap/CHANGELOG.md
/verdaccio/plugins/node_modules/verdaccio-ldap/index.js
/verdaccio/plugins/node_modules/verdaccio-ldap/LICENSE
/verdaccio/plugins/node_modules/verdaccio-ldap/README.md
# dependencies
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/.bin/ldapjs-add
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/.bin/ldapjs-compare
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/.bin/ldapjs-delete
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/.bin/ldapjs-modify
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/.bin/ldapjs-search
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/@types/ldapjs
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/@types/ldapjs/LICENSE
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/@types/ldapjs/README.md
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/@types/ldapjs/index.d.ts
/verdaccio/plugins/node_modules/verdaccio-ldap/node_modules/@types/ldapjs/package.json

# rest ommited
...