英文:
Prevent yarn from installing a newer package version to avoid conflicts
问题
以下是您要翻译的部分:
My project has a conflict on @types/react
because yarn keeps installing the newer version instead of the old one I need (^17.0.3).
yarn why @types/react
gives
=> Found "@types/react@18.0.27"
info Has been hoisted to "@types/react"
info Reasons this module exists
- "workspace-aggregator-b9abcbf3-4f80-4556-99aa-e9a250d3385a" depends on it
- Hoisted from "project#sdtool#@types#react-relay#@types#react"
- Hoisted from "project#sdtool#@types#react-table#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#annotation#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#axis#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#bounds#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#clip-path#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#drag#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#event#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#geo#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#glyph#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#gradient#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#grid#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#group#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#heatmap#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#hierarchy#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#legend#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#marker#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#network#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#pattern#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#responsive#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#shape#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#text#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#tooltip#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#voronoi#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#zoom#@types#react"
- Hoisted from "project#sdtool#@vx#vx#@vx#bounds#@types#react-dom#@types#react"
info Disk size without dependencies: "196KB"
info Disk size with unique dependencies: "1.37MB"
info Disk size with transitive dependencies: "1.37MB"
info Number of shared dependencies: 3
=> Found "sdtool#@types/react@17.0.53"
info This module exists because "project#sdtool" depends on it.
info Disk size without dependencies: "184KB"
info Disk size with unique dependencies: "1.36MB"
info Disk size with transitive dependencies: "1.36MB"
info Number of shared dependencies: 3
=> Found "@types/react-dom#@types/react@17.0.53"
info This module exists because "project#sdtool#@types#react-dom" depends on it.
info Disk size without dependencies: "184KB"
info Disk size with unique dependencies: "1.36MB"
info Disk size with transitive dependencies: "1.36MB"
info Number of shared dependencies: 3
Done in 0.69s.
In fact I can see from the yarn.lock
file that the packages you see above have the following dependency:
dependencies:
"@types/react" "*"
So how I can lock yarn on sticking to the version 17 of @types/react
?
UPDATE: these are my packages.json
package.json
{
"name": "name",
"author": "author",
"private": true,
"version": "0.0.0",
"license": "SEE LICENSE IN LICENSE",
"description": "desc",
"keywords": [
"keyword"
],
"repository": {
"type": "git",
"url": ""
},
"workspaces": {
"packages": [
"packages/"
]
},
"scripts": {
"storybook": "cd packages/sdtool && yarn storybook",
"build": "lerna run build",
"lint": "lerna run lint",
"prettier": "prettier --write "./packages/**/.{js,ts,jsx,tsx,json,md,xml}""
},
"devDependencies": {
"lerna": "^3.22.1",
"prettier": "^2.2.1"
},
"resolutions": {
"babel-loader": "8.1.0",
"react": "17.0.1",
"react-dom": "17.0.1",
"@emotion/styled": "11.0.0",
"@emotion/react": "11.0.0",
"typescript": "^4.0.3"
}
}
packages/pckg_name/package.json
{
"name": "pckg_name",
"version": "1.0.0",
"private": true,
"dependencies": {
"@emotion/react": "^11.1.5",
"@emotion/styled": "^11.10.5",
"@primer/octicons-react": "^12.1.0",
"@testing-library/jest-dom": "^5.11.10",
"@testing-library/react": "^11.2.6",
"@testing-library/user-event": "^13.1.1",
"@types/jest": "^26.0.22",
"@types/node": "^14.14.37",
"@types/react": "^17.0.3",
"@types/react-dom": "^17.0.3",
"@vx/vx": "^0.0.199",
"babel-plugin-relay": "^11.0.1",
"dayjs": "^1.10.4",
"history": "^5.0.0",
"immer": "^9.0.1",
"match-sorter": "^6.3.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-relay": "11.0.1",
"react-router-dom": "6.0.0-beta.0",
"react-scripts": "4.0.3",
"react-spring": "npm:@react
英文:
My project has a conflict on @types/react
because yarn keeps installing the newer version instead of the old one I need (^17.0.3).
yarn why @types/react
gives
=> Found "@types/react@18.0.27"
info Has been hoisted to "@types/react"
info Reasons this module exists
- "workspace-aggregator-b9abcbf3-4f80-4556-99aa-e9a250d3385a" depends on it
- Hoisted from "_project_#sdtool#@types#react-relay#@types#react"
- Hoisted from "_project_#sdtool#@types#react-table#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#annotation#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#axis#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#bounds#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#clip-path#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#drag#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#event#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#geo#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#glyph#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#gradient#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#grid#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#group#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#heatmap#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#hierarchy#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#legend#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#marker#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#network#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#pattern#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#responsive#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#shape#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#text#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#tooltip#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#voronoi#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#zoom#@types#react"
- Hoisted from "_project_#sdtool#@vx#vx#@vx#bounds#@types#react-dom#@types#react"
info Disk size without dependencies: "196KB"
info Disk size with unique dependencies: "1.37MB"
info Disk size with transitive dependencies: "1.37MB"
info Number of shared dependencies: 3
=> Found "sdtool#@types/react@17.0.53"
info This module exists because "_project_#sdtool" depends on it.
info Disk size without dependencies: "184KB"
info Disk size with unique dependencies: "1.36MB"
info Disk size with transitive dependencies: "1.36MB"
info Number of shared dependencies: 3
=> Found "@types/react-dom#@types/react@17.0.53"
info This module exists because "_project_#sdtool#@types#react-dom" depends on it.
info Disk size without dependencies: "184KB"
info Disk size with unique dependencies: "1.36MB"
info Disk size with transitive dependencies: "1.36MB"
info Number of shared dependencies: 3
Done in 0.69s.
In fact I can see from the yarn.lock
file that the packages you see above have the following dependency:
dependencies:
"@types/react" "*"
So how I can lock yarn on sticking to the version 17 of @types/react
?
UPDATE: these are my packages.json
package.json
{
"name": "name",
"author": "author",
"private": true,
"version": "0.0.0",
"license": "SEE LICENSE IN LICENSE",
"description": "desc",
"keywords": [
"keyword"
],
"repository": {
"type": "git",
"url": ""
},
"workspaces": {
"packages": [
"packages/*"
]
},
"scripts": {
"storybook": "cd packages/sdtool && yarn storybook",
"build": "lerna run build",
"lint": "lerna run lint",
"prettier": "prettier --write \"./packages/**/*.{js,ts,jsx,tsx,json,md,xml}\""
},
"devDependencies": {
"lerna": "^3.22.1",
"prettier": "^2.2.1"
},
"resolutions": {
"babel-loader": "8.1.0",
"react": "17.0.1",
"react-dom": "17.0.1",
"@emotion/styled": "11.0.0",
"@emotion/react": "11.0.0",
"typescript": "^4.0.3"
}
}
packages/pckg_name/package.json
{
"name": "pckg_name",
"version": "1.0.0",
"private": true,
"dependencies": {
"@emotion/react": "^11.1.5",
"@emotion/styled": "^11.10.5",
"@primer/octicons-react": "^12.1.0",
"@testing-library/jest-dom": "^5.11.10",
"@testing-library/react": "^11.2.6",
"@testing-library/user-event": "^13.1.1",
"@types/jest": "^26.0.22",
"@types/node": "^14.14.37",
"@types/react": "^17.0.3",
"@types/react-dom": "^17.0.3",
"@vx/vx": "^0.0.199",
"babel-plugin-relay": "^11.0.1",
"dayjs": "^1.10.4",
"history": "^5.0.0",
"immer": "^9.0.1",
"match-sorter": "^6.3.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-relay": "11.0.1",
"react-router-dom": "6.0.0-beta.0",
"react-scripts": "4.0.3",
"react-spring": "npm:@react-spring/web@9.0.0",
"react-table": "^7.6.3",
"react-use-gesture": "^9.1.3",
"react-window": "^1.8.6",
"typescript": "^4.2.3",
"web-vitals": "^1.1.1"
},
"scripts": {
"start": "react-scripts --openssl-legacy-provider start",
"build": "yarn relay && react-scripts build",
"test": "react-scripts test",
"lint": "eslint --ext js,ts,tsx src",
"relay": "relay-compiler",
"relay:watch": "relay-compiler --watch",
"storybook": "start-storybook -p 6006 -s public",
"build-storybook": "build-storybook -s public"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
],
"ignorePatterns": [
"*.stories.tsx"
],
"overrides": [
{
"files": "*.{js,jsx,ts,tsx}",
"rules": {
"no-console": [
2,
{
"allow": [
"warn",
"error"
]
}
]
}
}
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@storybook/addon-actions": "^6.2.3",
"@storybook/addon-essentials": "^6.2.3",
"@storybook/addon-links": "^6.2.3",
"@storybook/node-logger": "^6.2.3",
"@storybook/preset-create-react-app": "^3.1.7",
"@storybook/react": "^6.2.3",
"@types/react-relay": "^11.0.1",
"@types/react-table": "^7.0.29",
"@types/relay-runtime": "^11.0.0",
"graphql": "^15.5.0",
"relay-compiler": "^11.0.1",
"relay-compiler-language-typescript": "^13.0.9",
"relay-config": "^11.0.1",
"relay-test-utils": "^11.0.1"
},
"resolutions": {
"@types/react": "^17.0.3"
}
}
答案1
得分: 1
你可以通过在你的package.json中添加解析来强制指定依赖项的版本:
"resolutions": {
"@types/react": "^17.0.3"
}
英文:
You may force a version of dependency by adding resolutions to your package.json:
"resolutions": {
"@types/react": "^17.0.3"
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论