0

In order to deploy a dockerized service written in NodeJS I need to provide its plugins in a dedicated folder. The structure should look like this:

# 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

However when I attempt to install it using npm install verdaccio-ldap --prefix /verdaccio/plugins it looks like this:

# 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

Can npm install handle this somehow? If not can I just mv the directories to where I need them without breaking dependencies?

oschlueter
  • 2,596
  • 1
  • 23
  • 46

1 Answers1

0

As per npm-install Documentation, you can use --global-style which will cause npm to install the package into your local node_modules folder with the same layout it uses with the global node_modules folder. The dependencies of your package and everything they depend on will be flattened in their node_modules folder.

You cannot prevent the creation of node_modules with npm-install, but the layout will look like this:

# 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
Teh
  • 2,767
  • 2
  • 15
  • 16