简体   繁体   English

如何在node_modules目录之外本地安装节点模块?

[英]How to locally install node module outside of node_modules directory?

In order to deploy a dockerized service written in NodeJS I need to provide its plugins in a dedicated folder. 为了部署用NodeJS编写的dockerized服务,我需要在专用文件夹中提供它的插件。 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: 但是,当我尝试使用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

Can npm install handle this somehow? npm install可以以某种方式处理吗? If not can I just mv the directories to where I need them without breaking dependencies? 如果没有,我可以将目录mv到我需要的地方而不破坏依赖关系吗?

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. 根据npm-install文档 ,您可以使用--global-style ,这将导致npm将软件包安装到本地node_modules文件夹中,其文件格式与全局node_modules文件夹相同。 The dependencies of your package and everything they depend on will be flattened in their node_modules folder. 您的包及其依赖的所有内容的依赖关系将在其node_modules文件夹中展平。

You cannot prevent the creation of node_modules with npm-install, but the layout will look like this: 您无法阻止使用npm-install创建node_modules,但布局将如下所示:

# 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM