在我的package.json中,我有一个依赖项"protractor": "2.1.0"。该包又取决于"jasminewd2": "0.0.5"

jasminewd2包具有一些我想修改的行为。我下载了其资源并进行了所需的更改。 Yarn's documentation讲述了将本地源用于软件包的可能性:



当我执行该命令时

  • "jasminewd2": "file:\\CustomNodeModules\\jasminewd2"被添加到我的package.json中。
  • 这是我的yarn.lock文件:
    "file:\\CustomNodeModules\\jasminewd2", [email protected]:
      name jasminewd2
      version "0.0.5"
      resolved "https://registry.yarnpkg.com/jasminewd2
         /-/jasminewd2-0.0.5.tgz#528609a124dfc688c1e3f434a638e047066cd63e"
    

  • 结果,node_modules/jasminewd2包含npm存储库中的原始版本。如何让yarn安装我的版本?

    最佳答案

    我相信您的解决方案无效,因为jasminewd2是(protractor)的可传递依赖项,而不是直接依赖项。因此,当您直接添加它时,传递对象不受影响。

    您可以使用两种方法解决此问题:

  • 如果您的更改是临时的(用于开发或故障排除),则应按照documentation中的说明使用yarn link
  • 否则,您可以派生protractorjasminewd2软件包,并在各自的package.json中引用它们。 package.jsonsyntax for that"protractor": "<githubUser>/<githubRepo>"

  • 根据我的经验,第二种方法有npm缓存形式的警告:仅当gitt_strong依赖性首次安装时才拉动git repo的HEAD。此后,即使您的存储库的HEAD发生了更改,它也会保持缓存并每次都重新安装。

    这就是为什么我通常将提交哈希作为依赖项的一部分来引用的原因:"dependency": "user/repo.git#aef38fb2adc73304ae1ea87b0d607ad7fadc4d0g"。我没有使用yarn尝试这种技巧,但是假设它的行为完全相同(通过设计通过锁定文件)。

    关于javascript - 用自己的实现替换npm软件包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40398833/

    10-10 14:58