我的项目有一个依赖项,我有时从包服务器获取,有时从我的机器上的本地副本获取。因此,我经常需要在Yarn开关中查找依赖项。此外,我经常更改依赖项的本地副本,并且需要查看我的主项目中反映的更改。因此,我需要一种方法来告诉Yarn继续查看依赖项的相同位置,但重新安装依赖项,跳过缓存并直接从其当前源获取它,即使版本号未更改。 (有时我想尝试对依赖项进行小的更改,每次更新版本号很快就会变得烦人。)
我该怎么做?
我尝试了以下内容,但都没有效果:
yarn remove dependency
yarn add file:/dependency
继续使用先前版本的依赖项。
yarn remove dependency
yarn cache clear
yarn add file:/dependency
yarn install --force
还继续使用以前版本的依赖项。
yarn remove dependency
rm -rf node_modules/
yarn cache clear
yarn add file:/dependency
yarn install --force
仍然继续使用以前版本的依赖项。
如何确保Yarn使用最新版本的依赖项?
答案 0 :(得分:58)
在删除节点模块后重新安装包使用:
yarn install --check-files
答案 1 :(得分:15)
您可以使用yarn link
command。这将设置您的本地依赖项,这样无论何时对依赖项进行更改,它都会立即显示在您的主项目中,而无需您执行任何其他操作来更新它。
如果您的主项目位于<body>
且您的相关性位于~/programming/main
并且名为~/programming/dependency
,则您需要:
1)从您的依赖项中运行MyLocalDependency
(没有其他标志):
yarn link
2)从主项目中运行cd ~/programming/dependency
yarn link
:
yarn link <name of dependency package>
你已经完成了!
如果要从依赖项的本地副本切换到其他位置托管的副本,可以使用yarn unlink
。
cd ~/programming/main
yarn link MyLocalDependency
如果您使用的是NPM而非Yarn,cd ~/programming/main
yarn unlink MyLocalDependency
cd ~/programming/dependency
yarn unlink
和npm link
的工作方式相同。要取消链接依赖关系,请运行npm link <dependency>
。 (这是因为npm rm --global <dependency>
通过在全局NPM包集中创建simlink来工作,因此从全局包中卸载链接依赖项也会破坏链接。)
请参阅the npm link
documentation和How do I uninstall a package installed using npm link?
答案 2 :(得分:5)
还有另一种方法。
只需使用yarn upgrade package-name
答案 3 :(得分:3)
除了这些答案,我在切换git分支和yarn
时遇到了问题。我有一个分支用于更新node_modules
软件包,另外一个分支用于修复我的项目错误。当我检查错误修复并返回更新分支时,yarn install
或yarn
返回:
success Already up-to-date.
✨ Done in 0.79s.
但是未安装所有新软件包。因此,使用下面的命令,我强行安装了所有软件包:
yarn --check-files
现在它返回:
? Building fresh packages...
✨ Done in 79.91s.
答案 4 :(得分:2)
与Kevin self-answered一样,yarn link
是一个不错的选择。
但是,如果要链接的程序包具有 peer 依赖项,则可能会导致一些问题。
Karl Adler said也是一种解决方法:
yarn --check-files
但是,每个已更改的软件包都将重新安装(yarn
,而没有子命令与yarn install
相同)。
因此,如果您真的只想重新安装一个软件包:
yarn add package-name --force
答案 5 :(得分:1)
尽管这不是Yarn的答案(它似乎确实可以在纱线上工作,没有package.lock或其他任何东西),但这是我最终为赛普拉斯所做的事情(赛普拉斯将文件放到恕我直言的地方,不应该,如果您要在CI中缓存node_modules ...,请留下此答案,以防其他人对我有类似的问题,并找到这篇文章。
npm rebuild cypress
答案 6 :(得分:1)
如果您像我一样,并且正在安装您的个人软件包之一(没有其他人可以访问),则将其重新设置基础,然后强行将其推送到git,并收到错误消息:
$ yarn add https://github.com/username/my-rebased-package.git
error Command failed.
Exit code: 128
Command: git
Arguments: pull
Directory: /Users/eric/Library/Caches/Yarn/v6/.tmp/8ebab1a3de712aa3968f3de5d312545b
Output:
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
您可以通过直接删除缓存的文件夹来解决此问题:
$rm -rf /Users/eric/Library/Caches/Yarn/v6/.tmp/8ebab1a3de712aa3968f3de5d312545b
然后您就可以安装了。
答案 7 :(得分:0)
试试: