如何让我的NPM模块正确安装其依赖项?

时间:2018-06-19 10:42:36

标签: javascript node.js npm webpack module

我的自制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

1 个答案:

答案 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