【问题标题】:npm install dependencies of local modulesnpm install 本地模块的依赖
【发布时间】:2017-08-25 13:18:30
【问题描述】:

我在使用带有本地模块的 npm 时遇到问题。我的项目结构如下:

package.json
local_module/
    - package.json
    - gulpfile.json
gulpfile.js

主项目的package.json本质上是:

{
    "dependencies": {
        "local_module": "file:local_module"
    },
    "devDependencies": {
        "gulp": "..."
    }
}

本地模块的package.json本质上是:

{
    "scripts": {
        "prepublish": "gulp release"
    },
    "devDependencies": {
        "gulp": "..."
    }
}

我的目的是通过将local_module 保留为自己的包,用作主项目的依赖项,从而保持我的项目模块化。我想在主项目中运行npm install 并使用node_modules 中的local_module。但是,local_module 需要安装 gulp 来运行 prepublish 步骤,并且在从主项目运行 npm install 时,它不会安装 local_module 的依赖项,因此没有安装 gulp,所以它可以t 执行预发布步骤。

类似这样的问题已经问过好几个了,比如NPM doesn't install module dependencies,但是很多都是旧的,npm 的版本太多了,我无法得到一个明确的解决方案。

如何让 npm 在预发布步骤之前安装 local_module 的依赖项?我尝试为主项目添加预安装步骤,例如

"preinstall": "cd local_module && npm install"

但似乎 npm 在运行主项目的预安装之前尝试运行 local_module 的预发布步骤。我想要一个解决方案,它可以在一个 npm install 步骤中执行此操作,而不是在此之前有一个单独的步骤在本地模块中执行 npm install。

【问题讨论】:

    标签: npm


    【解决方案1】:

    我找到了一个在不久的将来对我有用的解决方案。我把local_module的package.json改成了:

    {
        "scripts": {
            "prepublish": "npm install --ignore-scripts && gulp release"
        },
        "devDependencies": {
            "gulp": "..."
        }
    }
    

    当npm install 从主项目运行时,预发布步骤首先在local_module 中运行,所以我强制预发布也进行安装,以便 gulp 可用于执行实际的预发布步骤。然而,这并不理想。

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2018-10-17
      • 2014-10-17
      • 1970-01-01
      • 2015-02-25
      • 2015-04-09
      • 2017-12-30
      • 1970-01-01
      相关资源
      最近更新 更多