node.js - 如何将两个 npm 包合并为一个
问题描述
我创建了一个新的 npm 包。假设我的新包名称是 my-package。我需要将bootstrap npm 包导入我的包中。如何将 Bootstrap 包导入我的包?我还需要更改引导包中的一些颜色变量以匹配我的包。当我这样做时npm install my-package
,它应该将 my-package 和 bootstarp 包安装为一个包。我不想单独安装 my-package 和 bootstrap 包,而是将这两个包安装或合并为 my-package。任何建议和感谢。
解决方案
这个问题听起来像是根植于dependencies和peerDependencies之间的区别。
在package.json
formy-package
包中,您可以定义bootstrap
为 adependency
或peerDependency
.
如果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 和所有引导对等依赖项。
为了完成你想要的,package.json
for my-package
lib 应该包含这些作为它自己的依赖项。例如
{
"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/
推荐阅读
- reactjs - 检查是否使用 Jest 在 axios 拦截器中调用调度操作
- c# - !(x is null) 和 x is object 之间有区别吗
- ios - 为什么 UISearchController 会改变导航栏的颜色?
- apache-spark - 如何让 AWS 上的本地 Spark 写入 S3
- azure - Azure 文件共享访问签名在结束日期之前过期
- java - Android Studios:我无法访问方法 onLocationResult(LocationResult locationResult),当我尝试自己覆盖它时它给了我一个错误
- typescript - 如何在 TypeScript 中将类型化的键值数组转换为 ES6 映射?
- reactjs - Firebase onAuthStateChanged 与 React 上下文未更新应用程序
- batch-file - 如何修复“命令的语法不正确”。错误
- python - 我是编码新手,在将数据导入 python 时遇到问题