【问题标题】:How to merge two npm packages as one如何将两个 npm 包合并为一个
【发布时间】:2020-12-17 13:56:23
【问题描述】:

我创建了一个新的 npm 包。假设我的新包名称是 my-package。我需要将bootstrap npm 包导入到我的包中。如何将 Bootstrap 包导入我的包?我还需要更改引导包中的一些颜色变量以匹配我的包。当我执行npm install my-package 时,它应该将 my-package 和 bootstarp 包安装为一个包。我不想单独安装 my-package 和 bootstrap 包,而是将这两个包安装或合并为 my-package。任何建议和感谢。

【问题讨论】:

  • 您介意说明为什么必须避免将引导程序安装为自己的包吗?有了这些信息,我们或许可以为您提供更好的帮助!
  • @Gershom 我总是需要在 bootstrap 包中更改一些颜色变量字体和图像,”在我的包中我重写了 css 和字体颜色,它适用于某些人

标签: node.js npm npm-package


【解决方案1】:

这个问题听起来好像是源于dependenciespeerDependencies之间的区别。

my-package 包的package.json 中,您可以将bootstrap 定义为dependencypeerDependency

如果bootstrap 包含在peerDependency 中,那么使用您的软件包的任何人都需要安装引导程序。这将导致他们的包树看起来像这样:

➜  consumer npm ls
consumer@1.0.0 /private/tmp/consumer
├── bootstrap@4.5.2
├── jquery@3.5.1
├── my-package@^1.0.0
└── popper.js@1.16.1

请注意,消费项目不仅需要对 my-package 有依赖关系,还需要对 bootstrap 和所有引导对等依赖项有依赖关系。

为了完成你想要的,my-package 库的package.json 应该包含这些作为它自己的依赖项。例如

{
  "name": "my-package",
  "dependencies": {
    "bootstrap": "^4.5.2",
    "jquery": "^3.5.1",
    "popper.js": "^1.16.1"
  }
  ...
}

通过这样做,任何使用my-package 的项目都将只能指定my-package 作为依赖项,并且所有嵌套的依赖项也将被抓取。以下是依赖关系树在上面的样子:

➜  consumer npm ls
consumer@1.0.0 /private/tmp/consumer
└─┬ my-package@1.0.0 -> /private/tmp/my-package
  ├── bootstrap@4.5.2
  ├── jquery@3.5.1
  └── popper.js@1.16.1

至于更改用于引导程序的颜色,您可以按照您正在使用的版本的主题文档来完成此操作:https://getbootstrap.com/docs/4.5/getting-started/theming/

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多