我的自制NPM模块出现问题,因为它在安装时会在应用程序node_modules目录中安装大部分依赖项,而不是将其包含在模块本身内。
实施例
APP
node_modules
MY_MODULE
node_modules
<ALL deps from MY_MODULE should be installed here>
<SOME/MOST deps from MY_MODULE are installed here>
上述原因导致问题,因为我的依赖项需要安装在MY_MODULE / node_modules下且不在MY_APP / node_modules下的特定版本。
例如;我在APP / node_modules下安装了Webpack 3,但MY_MODULE需要Webpack 4,并且安装在MY_MODULE / node_modules下,正如您所期望的那样。 但是需要Webpack 4的其他所有内容都安装在APP / node_modules下,因此会显示错误消息。
所以,在app中我有一个package.json: devDependencies:&#34; webpack&#34;:&#34; ^ 3.12.0&#34;,
在我的NPM模块中,我有一个package.json: &#34; dependecies&#34;:[ &#34; webpack&#34;:&#34; ^ 4.12.0&#34;, &#34; webpack-cli&#34;:&#34; ^ 3.0.8&#34;, ]
webpack-cli安装在APP / node_modules下,因此抱怨它需要Webpack 4并且无法找到它。
如果webpack-cli安装在APP / node_modules / MY_MODULE / node_modules下,它可以工作。
我怎样才能做到这一点?
谢谢,
/ J
答案 0 :(得分:1)
<ALL deps from MY_MODULE should be installed here>
他们不应该。 NPM v2也是如此。这种行为在NPM v3中已经改变,现在是v6。
如果依赖项具有不同版本约束的依赖关系,可以使用单个webpack
来满足(这是NPM v3中node_modules
被展平的原因之一),将会:
node_modules/webpack
否则,依赖于它们的包将使用多个依赖项:
node_modules/webpack@3.12.0
node_modules/webpack@4.12.0