在我的package.json中,我有一个依赖项"protractor": "2.1.0"
。该包又取决于"jasminewd2": "0.0.5"
。
该jasminewd2
包具有一些我想修改的行为。我下载了其资源并进行了所需的更改。 Yarn's documentation讲述了将本地源用于软件包的可能性:
当我执行该命令时
"jasminewd2": "file:\\CustomNodeModules\\jasminewd2"
被添加到我的package.json中。 "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
)的可传递依赖项,而不是直接依赖项。因此,当您直接添加它时,传递对象不受影响。
您可以使用两种方法解决此问题:
yarn link
。 protractor
和jasminewd2
软件包,并在各自的package.json
中引用它们。 package.json
的syntax 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/