使用“peerDependency”和“devDependency”的最佳实践

hel*_*elt 2 npm package.json

我正在编写一个 React 组件库,并且不想捆绑 React,所以我将库添加到peerDependencies而不是dependencies.

另外,为了防止出现有关缺少对等依赖项的愚蠢警告,我将相同的库添加到该devDependencies部分。

那不是 DRY,但固定警告对我来说比 DRY package.json 更重要。

所以问题是:是否有 DRYer 方法可以实现这一目标,或者我实际上遵循 2020 年 5 月的最佳实践?

{
    "peerDependencies": {
        "react": "^16.9.0",
        "react-dom": "^16.9.0",
        "tslib": "^1.11.0",
    },
    "devDependencies": {
        "@types/react": "^16.9.0",
        "react": "^16.9.0",
        "react-dom": "^16.9.0",
        "typescript": "^3.8.0"
    },
    "dependencies": {
        // nothing here
    }
}

Run Code Online (Sandbox Code Playgroud)

hel*_*elt 6

对于 npm >= v7,npm 宣布自动安装peerDependency软件包。

因此,如果 deps 已在 PeerDependency 部分中列出,则只需从 devDependency 中删除它们,如下所示:

{
    "peerDependencies": {
        "react": "^16.9.0",
        "react-dom": "^16.9.0",
        "tslib": "^1.11.0",
    },
    "devDependencies": {
        "@types/react": "^16.9.0",
        "typescript": "^3.8.0"
    },
    "dependencies": {
        // nothing here
    }
}
Run Code Online (Sandbox Code Playgroud)

对于 npm < 7,请遵循@gcastros 答案


另请参阅:github 上npm js 博客上