【问题标题】:Ignore a specific package while installing dependencies using 'npm install'使用“npm install”安装依赖项时忽略特定包
【发布时间】:2020-12-07 15:32:20
【问题描述】:

我有一个节点包react-native-push-notification,为此我对包进行了一些更改以满足我的要求。但是每次我执行npm install 时,新的(没有我更改的原始包)包都会与我当前的包重叠。

有什么办法可以限制npm install 忽略我修改过的包?我也想把这个包推送到 git。

任何线索都将受到高度赞赏。

【问题讨论】:

    标签: node.js git react-native github npm


    【解决方案1】:

    如果我理解正确,您已经对现有的节点包 react-native-push-notification 进行了一些更改,并且您宁愿使用自己的版本而不是原始版本。

    你有几个选择:

    • package.json 中更改react-native-push-notification 以指向您的git repo(例如您在github 上的fork)。这并不理想,因为它会使 semver 出现问题。但它有效。
    • 重命名包的 fork 并直接从 npm 使用它。例如。重命名为 react-native-push-notification2 甚至更好,使用范围包名称,例如@yournick/react-native-push-notification 并将其发布到 npm。更改您的 package.json 以改用此软件包。
    • 说服原始包的作者合并您的更改。这是理想的解决方案,但可能难以合并您的补丁等。

    【讨论】:

    • 嗨,分叉 repo 可以帮助我解决问题,但是使用我的帐户将代码发布到 npm 是否合法?
    • @HungrySoul。您不能发布到某人的 npm 帐户中。你只能发布到你自己的,不能有两个同名的包。所以你必须给它一个新名字并使用它
    • @HungrySoul。您不能发布到某人的 npm 帐户。你只能发布到你自己的,不能有两个同名的包。所以你必须给它一个新名字并使用它
    • @HungrySoul 不,您显然不能发布到相同的包名称,因为您无权访问它。因此,为什么您需要将包名称更改为您可以发布到的可用名称。
    【解决方案2】:

    patch-package 正是您要找的:https://github.com/ds300/patch-package

    即使在运行 npm install 之后,它也会保留您的更改。

    【讨论】:

      【解决方案3】:

      处理此问题的最佳方法是分叉回购https://help.github.com/articles/fork-a-repo/

      这样,您可以控制包的内容。

      然后使用您的回购地址更新您的package.json

      我也建议不要将你的包推送到 Git。包已经在版本控制之下(在他们自己的仓库中),推送到 Git 只会无缘无故地膨胀你的仓库。

      【讨论】:

      【解决方案4】:

      是的,你可以很容易地做到这一点。首先转到插件 GitHub 存储库,然后将其分叉到您的个人资料中。如果你想从直接仓库安装这个插件,你必须运行这个命令 -

      npm i https://github.com/zo0r/react-native-push-notification.git
      

      但是fork成功后会安装你修改过的文件,命令应该是-

      npm i https://github.com/YourUserName/react-native-push-notification.git
      

      而且你修改过的文件永远不会改变。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-02
        • 2016-01-13
        • 2021-09-09
        • 2017-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-13
        相关资源
        最近更新 更多