代码之家  ›  专栏  ›  技术社区  ›  Malvineous

实用程序的依赖项是否会进入devdependency?

  •  1
  • Malvineous  · 技术社区  · 8 年前

    devDependencies 部分 package.json 这样,任何将我的库拉入代码的人都不会下载我的测试框架,然后被忽略。

    但是,我还有一个指向库的命令行界面,如果有人选择全局安装库,则应该安装该界面,但当其他人将库拉入自己的项目时,也应该忽略该界面。此CLI有一些依赖项,因此我试图确定在何处列出它们,以便在全局安装时(或在库本身的开发工作期间)将它们拉入,但在另一个项目将库作为其依赖项拉入时忽略它们。

    • 如果我在主菜单中列出CLI依赖项 dependencies 第节,那么库的用户将把这些都拉到他们自己的代码中,即使他们永远不会使用CLI,所以这肯定是错误的。

    • 如果我把它们列为 依赖性 但是,如果有人试图使用全局安装库,则它们将被排除在其他理想项目之外 --production

    • bundledDependencies

    • peerDependencies 在这种情况下似乎不相关。

    • optionalDependencies

    • 将CLI移动到单独的包中也是一种选择,但是CLI在库开发期间至关重要,因此将其作为单独包的一部分将使开发更加困难,因此我希望避免使用CLI。

    依赖性

    1 回复  |  直到 8 年前
        1
  •  1
  •   mihai    8 年前

    我认为最好的方法是将CLI放在一个单独的包中,类似于 express-generator 这是express的CLI。

    即使这对开发至关重要,您的库用户也只需键入一个额外的命令, npm install library-cli ,如果这是正确的记录,我看不到任何问题。

    postinstall 主库的脚本或自定义脚本,在安装软件包后安装CLI:

    "scripts": {
        "postinstall": "npm install -g library-cli"
    }
    

    但是,如果您选择将CLI与主库绑定也可以,但是在这种情况下,您不应该将CLI依赖项放入 devDependencies dependencies 即使90%的用户永远不会使用它们。

    依赖性 对于您的CLI 应该进入 依赖关系

    推荐文章