代码之家  ›  专栏  ›  技术社区  ›  Thomas Schneiter

角度库绑定依赖项

  •  1
  • Thomas Schneiter  · 技术社区  · 6 年前

    我使用CLI创建并捆绑了一个Angular(7.2.0)库:

    ng g库MyLibrary

    ng建立MyLibrary

    这给了我 my-libary.umd.js 我需要的包裹。

    目前,所有依赖项都作为peerDependencies添加到library package.json中。我想做的是将一些依赖项与库(.umd)绑定起来。添加为“ dependencies “而不是” peerDependencies “好像没做什么把戏,我真的看不出有什么区别?

    我该怎么做?

    应该捆绑ngx微调器的package.json示例

    {
      "name": "demo-plugin",
      "version": "0.0.1",
      "peerDependencies": {
        "@angular/common": "^7.1.0",
        "@angular/core": "^7.1.0"
      },
      "dependecies": {
        "ngx-spinner": "^7.1.4"
      },
      "bundledDependencies": [
        "ngx-spinner"
      ]
    }
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   dummdidumm    6 年前

    你想把它加到 bundledDependencies :

    dependencies :当其他人使用您的库时,NPM会自动安装它们。此处列出的依赖项还需要在ng-package.json(“whitelistedNonPeerDependencies”)中白名单

    peerDependencies :库的用户必须安装依赖项(将其添加到自己的package.json中)

    捆绑依赖 :建立依赖项时,它将与库捆绑在一起。这也将捆绑所有可传递依赖项。如果要停止此链,则需要添加不应绑定到的依赖项 peerDependencies公司 . 例如,如果你想捆绑依赖项A,它依赖于B,你会得到一个带有A和B的捆绑包 peerDependencies公司 .

    您拥有的每个依赖项只应同时出现在其中一个依赖项中。因此,要捆绑依赖项,需要将此依赖项添加到根的package.json(而不是库package.json)中。你不应该做的是逃跑 npm install 在库文件夹中。如果你这样做了 npm安装 在library文件夹中,根package.json中没有绑定的依赖项(因此根node_modules文件夹中没有绑定的依赖项),生成成功,但依赖项将不会包含在生成中(cli可能会提示…)。

    长话短说,针对你的具体问题:

    1. 从library-package.json的“dependencies”部分删除“ngx微调器”
    2. 删除库中的node_modules-文件夹(如果有)
    3. 将“ngx微调器”作为依赖项添加到根包中。json
    4. 建立lib