例如,我尝试netlify-cli
使用以下命令从 17.7.0 升级到 17.8.1yarn upgrade-interactive
,并发生以下错误:
\xe2\x9e\xa4 YN0000: \xc2\xb7 Yarn 4.0.2\n\xe2\x9e\xa4 YN0000: \xe2\x94\x8c Resolution step\n\xe2\x9e\xa4 YN0082: \xe2\x94\x82 @netlify/zip-it-and-ship-it@npm:9.28.1: No candidates found\n\xe2\x9e\xa4 YN0000: \xe2\x94\x94 Completed in 1s 602ms\n\xe2\x9e\xa4 YN0000: \xc2\xb7 Failed with errors in 1s 617ms\n
Run Code Online (Sandbox Code Playgroud)\n和
\n\xe2\x9e\xa4 YN0000: \xc2\xb7 Yarn 4.0.2\n\xe2\x9e\xa4 YN0000: \xe2\x94\x8c Resolution step\n\xe2\x9e\xa4 YN0082: \xe2\x94\x82 @formkit/vue@npm:^1.3.0: No candidates found\n\xe2\x9e\xa4 YN0000: \xe2\x94\x94 Completed in 22s 953ms\n\xe2\x9e\xa4 YN0000: \xc2\xb7 Failed with errors in 22s 972ms\n
Run Code Online (Sandbox Code Playgroud)\n根据 npmjs.com 包@netlify/zip-it-and-ship-it
可在所请求的版本中使用:
我最近在使用不同的软件包时多次遇到此错误。 …
我在React上使用vite,当我使用yarn“实时服务器”时,我的项目会创建两个新文件,.pnp.loader.mjs和.pnp.cjs。该文件的用途是什么?我从未见过这些文件,总是使用 npm 或yarn,而且这是它们第一次出现。
我正在寻找一种方式来审计的依赖关系的在纱线2.漏洞纱线1.x中,有可能同是在npm
,通过运行yarn audit
代替npm audit
。但是 Yarn 2 没有这样的命令。根据berry github 上的这个问题,它不会被实现(项目维护者更喜欢通过插件完成)。
我试过运行,npm install --package-lock-only && npm audit
但安装在我的一些本地包上阻塞(我使用link:
url 类型在 package.json 中列出)。
构建它不会是一个复杂的插件,我很乐意这样做,但它不会像安装一些东西然后继续我的一天那么有趣。我环顾四周,但总是以相同的几个蒸气软件/废弃软件仓库告终。
但我仍然想我只是没有找到它们。或者有一个未记录的技巧可以使它变得容易。因此我的问题:)
PS,是的,我可以link:
在运行上面的npm install
和npm audit
命令时临时删除本地包,但这并不是我想要尝试为 CI 自动化的那种事情。
我想使用npmAuthToken
位于.yarnrc.yml
我的主目录中的
~/.yarnrc.yml
内容
npmScopes:
company:
npmAuthToken: NpmToken.token
Run Code Online (Sandbox Code Playgroud)
~/Project/MyProject/.yarnrc.yml
内容
enableGlobalCache: true
logFilters:
- code: YN0013
level: discard
nodeLinker: node-modules
npmScopes:
company:
npmAlwaysAuth: true
npmPublishRegistry: "https://company-url"
npmRegistryServer: "https://company-url"
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"
yarnPath: .yarn/releases/yarn-3.1.0.cjs
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行时,yarn install
它在解析步骤中失败,并显示以下消息:Invalid authentication (as an anonymous user)
。它与纱线 1 和~/.npmrc
锉刀配合得很好。现在我们要迁移yarn 2,但我坚持这个问题。关于如何解决这个问题有什么想法吗?谢谢!
我按照yarn官方文档激活了yarn(https://yarnpkg.com/getting-started/install)
我按照React Native官方文档(https://reactnative.dev/docs/environment-setup)使用yarn创建了一个expo应用程序
但是当我运行时yarn start
出现以下错误
node:internal/errors:465
ErrorCaptureStackTrace(err);
^
Error: spawn ENOTDIR
at ChildProcess.spawn (node:internal/child_process:413:11)
at Object.spawn (node:child_process:700:9)
at spawn (/Users/minseok/Repository/test/.yarn/cache/cross-spawn-npm-6.0.5-2deab6c280-f893bb0d96.zip/node_modules/cross-spawn/index.js:12:24)
at run (/Users/minseok/Repository/test/.yarn/unplugged/expo-npm-46.0.10-310b54dc3f/node_modules/expo/bin/cli.js:11:12)
at Object.<anonymous> (/Users/minseok/Repository/test/.yarn/unplugged/expo-npm-46.0.10-310b54dc3f/node_modules/expo/bin/cli.js:6:1)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Object.require$$0.Module._extensions..js (/Users/minseok/Repository/test/.pnp.cjs:20807:33)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.require$$0.Module._load (/Users/minseok/Repository/test/.pnp.cjs:20630:22) {
errno: -20,
code: 'ENOTDIR',
syscall: 'spawn'
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
本文建议在项目中添加配置.npmrc
,将范围与私有注册表关联起来,以降低 npm 替换攻击的风险(有人可能会故意发布同名的恶意公共包)。
如何在 Yarn 2 项目中实现类似的效果?我尝试.yarnrc.yml
在项目根目录中添加一个文件:
npmScopes:
someScope:
npmRegistryServer: https://npm.pkg.github.com
Run Code Online (Sandbox Code Playgroud)
~/.yarnrc.yml
我们还为每个开发人员提供了一个具有类似配置的主目录,但还具有适当的npmAuthToken
身份验证功能。
但是,当我执行 a 时yarn install
,我收到Invalid authentication (as an anonymous user)
该范围内的包的错误。据推测,特定于项目的.yarnrc.yml
设置会覆盖每个用户的设置~/.yarnrc.yml
,因此身份验证信息不再存在?
我所寻求的缓解措施是,如果开发人员忘记运行yarn npm login
,那么它不会检查公共注册表中特定范围内的包。在 Yarn 2 中有办法做到这一点吗?
为什么 Yarn 不直接称为 Yarn 2 Yarn 3 而是称为Yarn 2?
yarn --version
Run Code Online (Sandbox Code Playgroud)
输出:
3.0.1
Run Code Online (Sandbox Code Playgroud)
或者甚至称其为浆果?我不明白命名约定。
我创建了一个存储库,其中包含一个 React 应用程序(使用 创建create-react-app
)和一个组件目录,其中包含一个简单的 Material UI 按钮。文件夹结构为:
/components
/react-app
Run Code Online (Sandbox Code Playgroud)
这两个目录都设置为使用Yarn 2,并且不在工作区中(因为我试图在单独的目录中模拟项目并简化我的现实场景)。
我构建组件:
$ cd ~/components && yarn build
Run Code Online (Sandbox Code Playgroud)
然后,我用 Yarn 将组件链接到 React 应用程序:
$ cd ~/react-app & yarn link ../components -r -p
Run Code Online (Sandbox Code Playgroud)
package.json
这会导致目录中的文件发生修改react-app
:
{
"name": "react-app",
...
"resolutions": {
"components": "portal:../components"
}
}
Run Code Online (Sandbox Code Playgroud)
我的App.tsx
文件如下所示:
import './App.css';
import { Button } from 'components';
import React from 'react';
function App() {
return (
<Button>Test</Button>
);
}
export default App; …
Run Code Online (Sandbox Code Playgroud) 当我yarn
在使用 firebase 的 React 应用程序上运行时,我会收到几个警告,例如...
@firebase/auth@npm:0.14.5 [c52f6] doesn't provide @firebase/app-types@0.x requested by @firebase/auth-types@npm:0.10.0
myapp@workspace:. doesn't provide @testing-library/dom@>=5 requested by @testing-library/user-event@npm:10.2.0
Run Code Online (Sandbox Code Playgroud)
(仅供参考...我正在使用纱线 v2)
这是否意味着我需要将它们显式添加到我的 package.json 中?
当前的纱线版本是纱线3.0.0。尝试使用更改为yarn 2.0.0 yarn set version 2.0.0-rc.30
。即使在那之后,yarn 版本仍然保持在yarn 3.0.0。
我尝试过的其他替代方案:
npm uninstall -g yarn
then npm install -g yarn
。仍然纱线版本保持在 3.0.0。
更新:
yarnpkg-v2 ×10
yarnpkg ×8
javascript ×3
npm ×3
node.js ×2
yarnpkg-v3 ×2
expo ×1
netlify ×1
netlify-cli ×1
npm-audit ×1
react-native ×1
reactjs ×1
security ×1
typescript ×1
yarn-v2 ×1