Boundary folders broken with v3.9.2 and v3.13.2 no longer uses "packages/packageA/node_modules/**" for allowImportsFrom #40
-
For v3.9.2, with
using statements for internal workspace packages and external packages are picked up with When upgrading to the latest version v3.13.2, Would it be possible to reinstate the "packages/packageA/node_modules/**" usage, so that I do not need to use path aliases to pick up individual packages? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 16 replies
-
Hi @carolinejparr, could you prepare a simple repository where I can test your problem? |
Beta Was this translation helpful? Give feedback.
-
@carolinejparr I understand that you mean a folder structure like this, right?
|
Beta Was this translation helpful? Give feedback.
-
@carolinejparr Update to v3.13.3 and try this:
./packages/packageA/independentModules.mjs {
"packageRoot": "./packages/packageA", // Set packageRoot here.
"modules": [
{
"name": "App folder",
"pattern": "packages/packageA/src/app/**",
"allowImportsFrom": [
"packages/packageA/src/features/**",
"packages/packageA/src/app/**",
"{sharedImports}",
]
},
{
"name": "Features",
"pattern": "packages/packageA/src/features/**",
"allowImportsFrom": [
"packages/packageA/src/features/*/*.tsx",
"{family_3}/**",
"{sharedImports}",
],
"errorMessage": "🔥 A feature may only import items from shared folders and its own family. Importing items from another feature is prohibited. 🔥"
},
{
"name": "Shared",
"pattern": [
"packages/packageA/src/components/**",
"packages/packageA/src/models/**",
"packages/packageA/src/public/**",
"packages/packageA/src/services/**",
"packages/packageA/src/state/**",
"packages/packageA/src/tools/**",
"packages/packageA/src/tests/**",
"packages/packageA/src/hooks/**",
"packages/packageA/src/utils/**"
],
"allowImportsFrom": [
"{sharedImports}",
],
"errorMessage": "🔥 Shared folders are not allowed to import items from the `features` and `app` folders. 🔥"
},
{
"name": "Unknown files",
"pattern": [
[
"packages/packageA/src/**",
"!packages/packageA/src/*"
]
],
"allowExternalImports": false,
"allowImportsFrom": [],
"errorMessage": "🔥 This file is not specified as an independent module in `independentModules.jsonc`. 🔥"
}
],
"reusableImportPatterns": {
"sharedImports": [
"packages/packageA/src/components/**",
"packages/packageA/src/models/**",
"packages/packageA/src/public/**",
"packages/packageA/src/services/**",
"packages/packageA/src/state/**",
"packages/packageA/src/tests/**",
"packages/packageA/src/tools/**",
"packages/packageA/src/hooks/**",
"packages/packageA/src/utils/**"
]
}
} |
Beta Was this translation helpful? Give feedback.
The solution was:
eslint-plugin-project-structure
in root folder to be used inpackage/packageA
eslint-plugin-project-structure
frompackage/packageA
jsonc
files tots
eslint.config.js
files: eslintConfig.files.map((file) =>
fileComposition.ts
projectRoot
to point topackages/packageA
folderStructure.ts
projectRoot
to point topackages/packageA
indepen…