next i tried to re-produce this issue on an minimalistic setup - where everything worked fine. i even made the sherlock script to re-produce the error, but its not an issue on those setups. so i investigated and looked into differences in both.
const path = require(`path`);
const {promises: {mkdir, readFile, writeFile, writeJson}} = require(`fs`);
await packageJsonAndInstall({
"name": "root",
"private": true,
"devDependencies": {
"@yarnpkg/pnpify": "^2.0.0-rc.18",
"eslint": "^6.8.0"
},
"workspaces": [
"frontend/*"
]
});
/* create shared module*/
await mkdir('frontend/common/src', { recursive: true });
await writeFile("frontend/common/.eslintrc", `{
"extends": ["airbnb-base"],
}`);
await writeFile("frontend/common/index.js", `
module.exports = 'Hello from @company/common!';
`);
await writeFile("frontend/common/package.json", `{
"devDependencies": {
"eslint": "latest",
"eslint-config-airbnb-base": "latest",
"eslint-import-resolver-node": "latest",
"eslint-plugin-import": "latest"
},
"main": "index.js",
"name": "@company/common",
"scripts": {
"lint": "eslint index.js"
},
"version": "0.0.1"
}`);
/* create an app module*/
await mkdir('frontend/app', { recursive: true });
await writeFile("frontend/app/index.js", `
import React from 'react';
import common from '@company/common';
console.log(common);
const App = () => <div>{common}</div>;
export default App;
`);
await writeFile("frontend/app/.eslintrc", `{
"extends": ["airbnb"],
"rules": {
"react/jsx-filename-extension": 0
}
}`);
await writeFile("frontend/app/package.json", `{
"dependencies": {
"@company/common": "workspace:*",
"react": "latest",
"react-dom": "latest"
},
"devDependencies": {
"eslint": "latest",
"eslint-config-airbnb": "latest",
"eslint-import-resolver-node": "latest",
"eslint-plugin-import": "latest",
"eslint-plugin-jsx-a11y": "latest",
"eslint-plugin-react": "latest",
"eslint-plugin-react-hooks": "latest"
},
"main": "index.js",
"name": "@company/app",
"scripts": {
"lint": "eslint index.js"
},
"version": "0.0.1"
}`);
const version = await yarn('--version');
console.log('version', version);
await yarn(`install`);
await expect(yarn(`workspaces`, `foreach`, `run`, `lint`, `--fix`)).rejects.not.toThrow(`Command failed`);
// failing package
["@company/application-engine-common", [
["virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#workspace:frontend/common", {
"packageLocation": "./.yarn/$$virtual/@company-application-engine-common-virtual-f54925b670/1/frontend/common/",
"packageDependencies": [
["@company/application-engine-common", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#workspace:frontend/common"],
["@apollo/react-hooks", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:3.1.3"],
["@babel/cli", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.4"],
["@babel/core", "npm:7.8.7"],
["@babel/plugin-proposal-class-properties", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@babel/plugin-proposal-optional-chaining", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@babel/plugin-transform-runtime", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@babel/preset-env", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.7"],
["@babel/preset-react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@company/eslint-config-react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:0.10.0"],
["@company/prettier-config", "npm:0.10.0"],
["@company/react-components", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:2.10.4"],
["@company/react-hooks", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:0.4.30"],
["@lingui/cli", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.9.1"],
["@lingui/react", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:2.9.1"],
["apollo-cache-inmemory", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.6.5"],
["apollo-client", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.6.8"],
["apollo-link-http", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.5.16"],
["babel-core", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.0.0-bridge.0"],
["babel-eslint", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:10.1.0"],
["babel-loader", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:8.0.6"],
["babel-plugin-inline-react-svg", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.1.1"],
["babel-plugin-macros", "npm:2.8.0"],
["babel-plugin-styled-components", "virtual:f54925b670d342b2a26b9cfbdd22173564c51308da4cfa53be313e974776ae215815d0d7a72c1836358eebc172071d6ea3b43fe38681d577af9699ae5685ea9b#npm:1.10.7"],
["babel-plugin-transform-react-remove-prop-types", "npm:0.4.24"],
["concurrently", "npm:5.1.0"],
["cross-env", "npm:7.0.2"],
["eslint", "npm:6.8.0"],
["eslint-config-airbnb", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:18.0.1"],
["eslint-config-prettier", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:6.10.0"],
["eslint-plugin-import", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.20.1"],
["eslint-plugin-jsx-a11y", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:6.2.3"],
["eslint-plugin-prettier", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:3.1.2"],
["eslint-plugin-react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.19.0"],
["eslint-plugin-react-hooks", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.5.0"],
["graphql", "npm:14.6.0"],
["graphql-tag", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.10.3"],
["lint-staged", "npm:10.0.8"],
["polished", "npm:3.4.4"],
["prettier", "npm:1.19.1"],
["prop-types", "npm:15.7.2"],
["react", "npm:16.13.0"],
["react-dom", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:16.13.0"],
["react-test-renderer", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:16.13.0"],
["rimraf", "npm:3.0.2"],
["styled-components", "virtual:3363278033f03d7b5830777922dd557240be196eed2db347fc0b8d722a456d4b58d0791e438fe86e45567e6c54c29ff03abbff1a62eddda5965d9da0ea71cb90#npm:4.4.1"],
["stylelint", "npm:13.2.1"],
["typescript", "patch:typescript@npm%3A3.8.3#builtin<compat/typescript>::version=3.8.3&hash=273569"],
["why-did-you-update", "virtual:f54925b670d342b2a26b9cfbdd22173564c51308da4cfa53be313e974776ae215815d0d7a72c1836358eebc172071d6ea3b43fe38681d577af9699ae5685ea9b#npm:1.0.8"]
],
"packagePeers": [
"apollo-cache-inmemory",
"apollo-client",
"apollo-link-http",
"graphql",
"graphql-tag",
"prop-types",
"@lingui/react",
"react",
"@company/react-components",
"react-dom",
"@apollo/react-hooks",
"@company/react-hooks",
"styled-components"
],
"linkType": "SOFT",
}],
["workspace:frontend/common", {
"packageLocation": "./frontend/common/",
"packageDependencies": [
["@company/application-engine-common", "workspace:frontend/common"],
["@apollo/react-hooks", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:3.1.3"],
["@babel/cli", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.4"],
["@babel/core", "npm:7.8.7"],
["@babel/plugin-proposal-class-properties", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@babel/plugin-proposal-optional-chaining", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@babel/plugin-transform-runtime", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@babel/preset-env", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.7"],
["@babel/preset-react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.8.3"],
["@company/eslint-config-react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:0.10.0"],
["@company/prettier-config", "npm:0.10.0"],
["@company/react-components", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.10.4"],
["@company/react-hooks", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:0.4.30"],
["@lingui/cli", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.9.1"],
["@lingui/react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.9.1"],
["apollo-cache-inmemory", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.6.5"],
["apollo-client", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.6.8"],
["apollo-link-http", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.5.16"],
["babel-core", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.0.0-bridge.0"],
["babel-eslint", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:10.1.0"],
["babel-loader", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:8.0.6"],
["babel-plugin-inline-react-svg", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.1.1"],
["babel-plugin-macros", "npm:2.8.0"],
["babel-plugin-styled-components", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.10.7"],
["babel-plugin-transform-react-remove-prop-types", "npm:0.4.24"],
["concurrently", "npm:5.1.0"],
["cross-env", "npm:7.0.2"],
["eslint", "npm:6.8.0"],
["eslint-config-airbnb", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:18.0.1"],
["eslint-config-prettier", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:6.10.0"],
["eslint-plugin-import", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.20.1"],
["eslint-plugin-jsx-a11y", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:6.2.3"],
["eslint-plugin-prettier", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:3.1.2"],
["eslint-plugin-react", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:7.19.0"],
["eslint-plugin-react-hooks", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.5.0"],
["graphql", "npm:14.6.0"],
["graphql-tag", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:2.10.3"],
["lint-staged", "npm:10.0.8"],
["polished", "npm:3.4.4"],
["prettier", "npm:1.19.1"],
["prop-types", "npm:15.7.2"],
["react", "npm:16.13.0"],
["react-dom", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:16.13.0"],
["react-test-renderer", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:16.13.0"],
["rimraf", "npm:3.0.2"],
["styled-components", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:5.0.1"],
["stylelint", "npm:13.2.1"],
["typescript", "patch:typescript@npm%3A3.8.3#builtin<compat/typescript>::version=3.8.3&hash=273569"],
["why-did-you-update", "virtual:9667ad72a35e2ac32dfd324586b946df87333c5d774f6122c4b77c99ccd40f7be13e4d1dc27db7649345a8f4337a87d23742f9b4c5d58b1e0e97f2583b009e5a#npm:1.0.8"]
],
"packagePeers": [
"apollo-cache-inmemory",
"apollo-client",
"apollo-link-http",
"graphql",
"graphql-tag",
"polished",
"prop-types",
"@lingui/react",
"react",
"@company/react-components",
"react-dom",
"@apollo/react-hooks",
"@company/react-hooks",
"styled-components"
],
"linkType": "SOFT",
}]
]],
Describe the bug
When using
eslint&eslint-plugin-importin an monorepo, where we have dependencies on each other workspace - eslint is accessing the symlinked (from the workspace) folder and checking the eslint errors from that file. which results in following error:next i tried to re-produce this issue on an minimalistic setup - where everything worked fine. i even made the sherlock script to re-produce the error, but its not an issue on those setups. so i investigated and looked into differences in both.
as i looked into the
.pnp.jsof both - i saw that the common package gets linked a bit differently:and in the original error its even mentioning the virtual package
/Users/sschaffernak/dev/_yarnv2/application-engine/.yarn/$$virtual/@company-application-engine-common-virtual-f54925b670so i think it has something to do with it.can somebody explain why there are two versions created by yarn in my pnp file?
Environment if relevant (please complete the following information):