docs(nx-dev): make more concepts submenu (#18266)
This commit is contained in:
parent
999c2b5eee
commit
331707d6eb
@ -1021,12 +1021,181 @@
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "More Concept Guides »",
|
||||
"path": "/more-concepts",
|
||||
"id": "more-concept-guides",
|
||||
"name": "More Concepts",
|
||||
"path": "/concepts/more-concepts",
|
||||
"id": "more-concepts",
|
||||
"isExternal": false,
|
||||
"children": [
|
||||
{
|
||||
"name": "Customizing Inputs",
|
||||
"path": "/concepts/more-concepts/customizing-inputs",
|
||||
"id": "customizing-inputs",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Incremental Builds",
|
||||
"path": "/concepts/more-concepts/incremental-builds",
|
||||
"id": "incremental-builds",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Illustrated Distributed Task Execution",
|
||||
"path": "/concepts/more-concepts/illustrated-dte",
|
||||
"id": "illustrated-dte",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Nx and Turborepo",
|
||||
"path": "/concepts/more-concepts/turbo-and-nx",
|
||||
"id": "turbo-and-nx",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Monorepos",
|
||||
"path": "/concepts/more-concepts/why-monorepos",
|
||||
"id": "why-monorepos",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Dependency Management",
|
||||
"path": "/concepts/more-concepts/dependency-management",
|
||||
"id": "dependency-management",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Code Sharing",
|
||||
"path": "/concepts/more-concepts/code-sharing",
|
||||
"id": "code-sharing",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Using Nx at Enterprises",
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise",
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Nx Daemon",
|
||||
"path": "/concepts/more-concepts/nx-daemon",
|
||||
"id": "nx-daemon",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Nx and the Angular CLI",
|
||||
"path": "/concepts/more-concepts/nx-and-angular",
|
||||
"id": "nx-and-angular",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Folder Structure",
|
||||
"path": "/concepts/more-concepts/folder-structure",
|
||||
"id": "folder-structure",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Nx Devkit and Angular Devkit",
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit",
|
||||
"id": "nx-devkit-angular-devkit",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Micro Frontend Architecture",
|
||||
"path": "/concepts/more-concepts/micro-frontend-architecture",
|
||||
"id": "micro-frontend-architecture",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Applications and Libraries",
|
||||
"path": "/concepts/more-concepts/applications-and-libraries",
|
||||
"id": "applications-and-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Creating Libraries",
|
||||
"path": "/concepts/more-concepts/creating-libraries",
|
||||
"id": "creating-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Library Types",
|
||||
"path": "/concepts/more-concepts/library-types",
|
||||
"id": "library-types",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Grouping Libraries",
|
||||
"path": "/concepts/more-concepts/grouping-libraries",
|
||||
"id": "grouping-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Buildable and Publishable Libraries",
|
||||
"path": "/concepts/more-concepts/buildable-and-publishable-libraries",
|
||||
"id": "buildable-and-publishable-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "How the Project Graph is Built",
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built",
|
||||
"id": "how-project-graph-is-built",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Nx and the Nx Wrapper",
|
||||
"path": "/concepts/more-concepts/nx-and-the-wrapper",
|
||||
"id": "nx-and-the-wrapper",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
},
|
||||
{
|
||||
"name": "Managing your Global Nx Installation",
|
||||
"path": "/concepts/more-concepts/global-nx",
|
||||
"id": "global-nx",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
"disableCollapsible": false
|
||||
}
|
||||
],
|
||||
"disableCollapsible": false
|
||||
}
|
||||
],
|
||||
"disableCollapsible": false
|
||||
@ -1081,13 +1250,13 @@
|
||||
},
|
||||
{
|
||||
"name": "More Concepts",
|
||||
"path": "/more-concepts",
|
||||
"path": "/concepts/more-concepts",
|
||||
"id": "more-concepts",
|
||||
"isExternal": false,
|
||||
"children": [
|
||||
{
|
||||
"name": "Customizing Inputs",
|
||||
"path": "/more-concepts/customizing-inputs",
|
||||
"path": "/concepts/more-concepts/customizing-inputs",
|
||||
"id": "customizing-inputs",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1095,7 +1264,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Incremental Builds",
|
||||
"path": "/more-concepts/incremental-builds",
|
||||
"path": "/concepts/more-concepts/incremental-builds",
|
||||
"id": "incremental-builds",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1103,7 +1272,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Illustrated Distributed Task Execution",
|
||||
"path": "/more-concepts/illustrated-dte",
|
||||
"path": "/concepts/more-concepts/illustrated-dte",
|
||||
"id": "illustrated-dte",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1111,7 +1280,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx and Turborepo",
|
||||
"path": "/more-concepts/turbo-and-nx",
|
||||
"path": "/concepts/more-concepts/turbo-and-nx",
|
||||
"id": "turbo-and-nx",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1119,7 +1288,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Monorepos",
|
||||
"path": "/more-concepts/why-monorepos",
|
||||
"path": "/concepts/more-concepts/why-monorepos",
|
||||
"id": "why-monorepos",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1127,7 +1296,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Dependency Management",
|
||||
"path": "/more-concepts/dependency-management",
|
||||
"path": "/concepts/more-concepts/dependency-management",
|
||||
"id": "dependency-management",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1135,7 +1304,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Code Sharing",
|
||||
"path": "/more-concepts/code-sharing",
|
||||
"path": "/concepts/more-concepts/code-sharing",
|
||||
"id": "code-sharing",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1143,7 +1312,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Using Nx at Enterprises",
|
||||
"path": "/more-concepts/monorepo-nx-enterprise",
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise",
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1151,7 +1320,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx Daemon",
|
||||
"path": "/more-concepts/nx-daemon",
|
||||
"path": "/concepts/more-concepts/nx-daemon",
|
||||
"id": "nx-daemon",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1159,7 +1328,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx and the Angular CLI",
|
||||
"path": "/more-concepts/nx-and-angular",
|
||||
"path": "/concepts/more-concepts/nx-and-angular",
|
||||
"id": "nx-and-angular",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1167,7 +1336,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Folder Structure",
|
||||
"path": "/more-concepts/folder-structure",
|
||||
"path": "/concepts/more-concepts/folder-structure",
|
||||
"id": "folder-structure",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1175,7 +1344,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx Devkit and Angular Devkit",
|
||||
"path": "/more-concepts/nx-devkit-angular-devkit",
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit",
|
||||
"id": "nx-devkit-angular-devkit",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1183,7 +1352,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Micro Frontend Architecture",
|
||||
"path": "/more-concepts/micro-frontend-architecture",
|
||||
"path": "/concepts/more-concepts/micro-frontend-architecture",
|
||||
"id": "micro-frontend-architecture",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1191,7 +1360,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Applications and Libraries",
|
||||
"path": "/more-concepts/applications-and-libraries",
|
||||
"path": "/concepts/more-concepts/applications-and-libraries",
|
||||
"id": "applications-and-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1199,7 +1368,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Creating Libraries",
|
||||
"path": "/more-concepts/creating-libraries",
|
||||
"path": "/concepts/more-concepts/creating-libraries",
|
||||
"id": "creating-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1207,7 +1376,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Library Types",
|
||||
"path": "/more-concepts/library-types",
|
||||
"path": "/concepts/more-concepts/library-types",
|
||||
"id": "library-types",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1215,7 +1384,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Grouping Libraries",
|
||||
"path": "/more-concepts/grouping-libraries",
|
||||
"path": "/concepts/more-concepts/grouping-libraries",
|
||||
"id": "grouping-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1223,7 +1392,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Buildable and Publishable Libraries",
|
||||
"path": "/more-concepts/buildable-and-publishable-libraries",
|
||||
"path": "/concepts/more-concepts/buildable-and-publishable-libraries",
|
||||
"id": "buildable-and-publishable-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1231,7 +1400,7 @@
|
||||
},
|
||||
{
|
||||
"name": "How the Project Graph is Built",
|
||||
"path": "/more-concepts/how-project-graph-is-built",
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built",
|
||||
"id": "how-project-graph-is-built",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1239,7 +1408,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx and the Nx Wrapper",
|
||||
"path": "/more-concepts/nx-and-the-wrapper",
|
||||
"path": "/concepts/more-concepts/nx-and-the-wrapper",
|
||||
"id": "nx-and-the-wrapper",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1247,7 +1416,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Managing your Global Nx Installation",
|
||||
"path": "/more-concepts/global-nx",
|
||||
"path": "/concepts/more-concepts/global-nx",
|
||||
"id": "global-nx",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1258,7 +1427,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Customizing Inputs",
|
||||
"path": "/more-concepts/customizing-inputs",
|
||||
"path": "/concepts/more-concepts/customizing-inputs",
|
||||
"id": "customizing-inputs",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1266,7 +1435,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Incremental Builds",
|
||||
"path": "/more-concepts/incremental-builds",
|
||||
"path": "/concepts/more-concepts/incremental-builds",
|
||||
"id": "incremental-builds",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1274,7 +1443,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Illustrated Distributed Task Execution",
|
||||
"path": "/more-concepts/illustrated-dte",
|
||||
"path": "/concepts/more-concepts/illustrated-dte",
|
||||
"id": "illustrated-dte",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1282,7 +1451,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx and Turborepo",
|
||||
"path": "/more-concepts/turbo-and-nx",
|
||||
"path": "/concepts/more-concepts/turbo-and-nx",
|
||||
"id": "turbo-and-nx",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1290,7 +1459,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Monorepos",
|
||||
"path": "/more-concepts/why-monorepos",
|
||||
"path": "/concepts/more-concepts/why-monorepos",
|
||||
"id": "why-monorepos",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1298,7 +1467,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Dependency Management",
|
||||
"path": "/more-concepts/dependency-management",
|
||||
"path": "/concepts/more-concepts/dependency-management",
|
||||
"id": "dependency-management",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1306,7 +1475,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Code Sharing",
|
||||
"path": "/more-concepts/code-sharing",
|
||||
"path": "/concepts/more-concepts/code-sharing",
|
||||
"id": "code-sharing",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1314,7 +1483,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Using Nx at Enterprises",
|
||||
"path": "/more-concepts/monorepo-nx-enterprise",
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise",
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1322,7 +1491,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx Daemon",
|
||||
"path": "/more-concepts/nx-daemon",
|
||||
"path": "/concepts/more-concepts/nx-daemon",
|
||||
"id": "nx-daemon",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1330,7 +1499,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx and the Angular CLI",
|
||||
"path": "/more-concepts/nx-and-angular",
|
||||
"path": "/concepts/more-concepts/nx-and-angular",
|
||||
"id": "nx-and-angular",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1338,7 +1507,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Folder Structure",
|
||||
"path": "/more-concepts/folder-structure",
|
||||
"path": "/concepts/more-concepts/folder-structure",
|
||||
"id": "folder-structure",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1346,7 +1515,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx Devkit and Angular Devkit",
|
||||
"path": "/more-concepts/nx-devkit-angular-devkit",
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit",
|
||||
"id": "nx-devkit-angular-devkit",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1354,7 +1523,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Micro Frontend Architecture",
|
||||
"path": "/more-concepts/micro-frontend-architecture",
|
||||
"path": "/concepts/more-concepts/micro-frontend-architecture",
|
||||
"id": "micro-frontend-architecture",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1362,7 +1531,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Applications and Libraries",
|
||||
"path": "/more-concepts/applications-and-libraries",
|
||||
"path": "/concepts/more-concepts/applications-and-libraries",
|
||||
"id": "applications-and-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1370,7 +1539,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Creating Libraries",
|
||||
"path": "/more-concepts/creating-libraries",
|
||||
"path": "/concepts/more-concepts/creating-libraries",
|
||||
"id": "creating-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1378,7 +1547,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Library Types",
|
||||
"path": "/more-concepts/library-types",
|
||||
"path": "/concepts/more-concepts/library-types",
|
||||
"id": "library-types",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1386,7 +1555,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Grouping Libraries",
|
||||
"path": "/more-concepts/grouping-libraries",
|
||||
"path": "/concepts/more-concepts/grouping-libraries",
|
||||
"id": "grouping-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1394,7 +1563,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Buildable and Publishable Libraries",
|
||||
"path": "/more-concepts/buildable-and-publishable-libraries",
|
||||
"path": "/concepts/more-concepts/buildable-and-publishable-libraries",
|
||||
"id": "buildable-and-publishable-libraries",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1402,7 +1571,7 @@
|
||||
},
|
||||
{
|
||||
"name": "How the Project Graph is Built",
|
||||
"path": "/more-concepts/how-project-graph-is-built",
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built",
|
||||
"id": "how-project-graph-is-built",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1410,7 +1579,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Nx and the Nx Wrapper",
|
||||
"path": "/more-concepts/nx-and-the-wrapper",
|
||||
"path": "/concepts/more-concepts/nx-and-the-wrapper",
|
||||
"id": "nx-and-the-wrapper",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
@ -1418,7 +1587,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Managing your Global Nx Installation",
|
||||
"path": "/more-concepts/global-nx",
|
||||
"path": "/concepts/more-concepts/global-nx",
|
||||
"id": "global-nx",
|
||||
"isExternal": false,
|
||||
"children": [],
|
||||
|
||||
@ -1268,13 +1268,224 @@
|
||||
"tags": ["run-tasks"]
|
||||
},
|
||||
{
|
||||
"id": "more-concept-guides",
|
||||
"name": "More Concept Guides »",
|
||||
"description": "",
|
||||
"id": "more-concepts",
|
||||
"name": "More Concepts",
|
||||
"description": "Get deeper into how Nx works and its different aspects.",
|
||||
"file": "",
|
||||
"itemList": [
|
||||
{
|
||||
"id": "customizing-inputs",
|
||||
"name": "Customizing Inputs",
|
||||
"description": "",
|
||||
"file": "shared/concepts/customizing-inputs",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts",
|
||||
"path": "/concepts/more-concepts/customizing-inputs",
|
||||
"tags": ["cache-task-results"]
|
||||
},
|
||||
{
|
||||
"id": "incremental-builds",
|
||||
"name": "Incremental Builds",
|
||||
"description": "",
|
||||
"file": "shared/incremental-builds",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/incremental-builds",
|
||||
"tags": ["use-task-executors"]
|
||||
},
|
||||
{
|
||||
"id": "illustrated-dte",
|
||||
"name": "Illustrated Distributed Task Execution",
|
||||
"description": "",
|
||||
"file": "shared/concepts/illustrated-dte-guide",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/illustrated-dte",
|
||||
"tags": ["distribute-task-execution"]
|
||||
},
|
||||
{
|
||||
"id": "turbo-and-nx",
|
||||
"name": "Nx and Turborepo",
|
||||
"description": "",
|
||||
"file": "shared/guides/turbo-and-nx",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/turbo-and-nx",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "why-monorepos",
|
||||
"name": "Monorepos",
|
||||
"description": "",
|
||||
"file": "shared/guides/why-monorepos",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/why-monorepos",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "dependency-management",
|
||||
"name": "Dependency Management",
|
||||
"description": "",
|
||||
"file": "shared/concepts/dependency-management",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/dependency-management",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "code-sharing",
|
||||
"name": "Code Sharing",
|
||||
"description": "",
|
||||
"file": "shared/concepts/code-sharing",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/code-sharing",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"name": "Using Nx at Enterprises",
|
||||
"description": "",
|
||||
"file": "shared/monorepo-nx-enterprise",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise",
|
||||
"tags": ["enforce-project-boundaries", "use-code-generators"]
|
||||
},
|
||||
{
|
||||
"id": "nx-daemon",
|
||||
"name": "Nx Daemon",
|
||||
"description": "",
|
||||
"file": "shared/daemon",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/nx-daemon",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "nx-and-angular",
|
||||
"name": "Nx and the Angular CLI",
|
||||
"description": "",
|
||||
"file": "shared/guides/nx-and-angular-cli",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/nx-and-angular",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "folder-structure",
|
||||
"name": "Folder Structure",
|
||||
"description": "",
|
||||
"file": "shared/guides/integrated-repo-folder-structure",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/folder-structure",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "nx-devkit-angular-devkit",
|
||||
"name": "Nx Devkit and Angular Devkit",
|
||||
"description": "",
|
||||
"file": "shared/guides/nx-devkit-angular-devkit",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit",
|
||||
"tags": ["create-your-own-plugin"]
|
||||
},
|
||||
{
|
||||
"id": "micro-frontend-architecture",
|
||||
"name": "Micro Frontend Architecture",
|
||||
"description": "",
|
||||
"file": "shared/guides/module-federation/micro-frontend-architecture",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/micro-frontend-architecture",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "applications-and-libraries",
|
||||
"name": "Applications and Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/applications-and-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/applications-and-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
"id": "creating-libraries",
|
||||
"name": "Creating Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/creating-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/creating-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
"id": "library-types",
|
||||
"name": "Library Types",
|
||||
"description": "",
|
||||
"file": "shared/workspace/library-types",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/library-types",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
"id": "grouping-libraries",
|
||||
"name": "Grouping Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/grouping-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/grouping-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
"id": "buildable-and-publishable-libraries",
|
||||
"name": "Buildable and Publishable Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/buildable-and-publishable-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/buildable-and-publishable-libraries",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "how-project-graph-is-built",
|
||||
"name": "How the Project Graph is Built",
|
||||
"description": "",
|
||||
"file": "shared/concepts/how-project-graph-is-built",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built",
|
||||
"tags": ["explore-graph"]
|
||||
},
|
||||
{
|
||||
"id": "nx-and-the-wrapper",
|
||||
"name": "Nx and the Nx Wrapper",
|
||||
"description": "",
|
||||
"file": "shared/guides/nx-and-the-wrapper",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/nx-and-the-wrapper",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "global-nx",
|
||||
"name": "Managing your Global Nx Installation",
|
||||
"description": "",
|
||||
"file": "shared/guides/global-nx",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts/global-nx",
|
||||
"tags": []
|
||||
}
|
||||
],
|
||||
"isExternal": false,
|
||||
"path": "/concepts/more-concepts",
|
||||
"tags": []
|
||||
}
|
||||
],
|
||||
@ -1342,7 +1553,7 @@
|
||||
"path": "/concepts/affected",
|
||||
"tags": ["run-tasks"]
|
||||
},
|
||||
"/more-concepts": {
|
||||
"/concepts/more-concepts": {
|
||||
"id": "more-concepts",
|
||||
"name": "More Concepts",
|
||||
"description": "Get deeper into how Nx works and its different aspects.",
|
||||
@ -1355,7 +1566,7 @@
|
||||
"file": "shared/concepts/customizing-inputs",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/customizing-inputs",
|
||||
"path": "/concepts/more-concepts/customizing-inputs",
|
||||
"tags": ["cache-task-results"]
|
||||
},
|
||||
{
|
||||
@ -1365,7 +1576,7 @@
|
||||
"file": "shared/incremental-builds",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/incremental-builds",
|
||||
"path": "/concepts/more-concepts/incremental-builds",
|
||||
"tags": ["use-task-executors"]
|
||||
},
|
||||
{
|
||||
@ -1375,7 +1586,7 @@
|
||||
"file": "shared/concepts/illustrated-dte-guide",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/illustrated-dte",
|
||||
"path": "/concepts/more-concepts/illustrated-dte",
|
||||
"tags": ["distribute-task-execution"]
|
||||
},
|
||||
{
|
||||
@ -1385,7 +1596,7 @@
|
||||
"file": "shared/guides/turbo-and-nx",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/turbo-and-nx",
|
||||
"path": "/concepts/more-concepts/turbo-and-nx",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1395,7 +1606,7 @@
|
||||
"file": "shared/guides/why-monorepos",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/why-monorepos",
|
||||
"path": "/concepts/more-concepts/why-monorepos",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1405,7 +1616,7 @@
|
||||
"file": "shared/concepts/dependency-management",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/dependency-management",
|
||||
"path": "/concepts/more-concepts/dependency-management",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1415,7 +1626,7 @@
|
||||
"file": "shared/concepts/code-sharing",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/code-sharing",
|
||||
"path": "/concepts/more-concepts/code-sharing",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1425,7 +1636,7 @@
|
||||
"file": "shared/monorepo-nx-enterprise",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/monorepo-nx-enterprise",
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise",
|
||||
"tags": ["enforce-project-boundaries", "use-code-generators"]
|
||||
},
|
||||
{
|
||||
@ -1435,7 +1646,7 @@
|
||||
"file": "shared/daemon",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-daemon",
|
||||
"path": "/concepts/more-concepts/nx-daemon",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1445,7 +1656,7 @@
|
||||
"file": "shared/guides/nx-and-angular-cli",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-and-angular",
|
||||
"path": "/concepts/more-concepts/nx-and-angular",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1455,7 +1666,7 @@
|
||||
"file": "shared/guides/integrated-repo-folder-structure",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/folder-structure",
|
||||
"path": "/concepts/more-concepts/folder-structure",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1465,7 +1676,7 @@
|
||||
"file": "shared/guides/nx-devkit-angular-devkit",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-devkit-angular-devkit",
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit",
|
||||
"tags": ["create-your-own-plugin"]
|
||||
},
|
||||
{
|
||||
@ -1475,7 +1686,7 @@
|
||||
"file": "shared/guides/module-federation/micro-frontend-architecture",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/micro-frontend-architecture",
|
||||
"path": "/concepts/more-concepts/micro-frontend-architecture",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1485,7 +1696,7 @@
|
||||
"file": "shared/workspace/applications-and-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/applications-and-libraries",
|
||||
"path": "/concepts/more-concepts/applications-and-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
@ -1495,7 +1706,7 @@
|
||||
"file": "shared/workspace/creating-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/creating-libraries",
|
||||
"path": "/concepts/more-concepts/creating-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
@ -1505,7 +1716,7 @@
|
||||
"file": "shared/workspace/library-types",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/library-types",
|
||||
"path": "/concepts/more-concepts/library-types",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
@ -1515,7 +1726,7 @@
|
||||
"file": "shared/workspace/grouping-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/grouping-libraries",
|
||||
"path": "/concepts/more-concepts/grouping-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
{
|
||||
@ -1525,7 +1736,7 @@
|
||||
"file": "shared/workspace/buildable-and-publishable-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/buildable-and-publishable-libraries",
|
||||
"path": "/concepts/more-concepts/buildable-and-publishable-libraries",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1535,7 +1746,7 @@
|
||||
"file": "shared/concepts/how-project-graph-is-built",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/how-project-graph-is-built",
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built",
|
||||
"tags": ["explore-graph"]
|
||||
},
|
||||
{
|
||||
@ -1545,7 +1756,7 @@
|
||||
"file": "shared/guides/nx-and-the-wrapper",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-and-the-wrapper",
|
||||
"path": "/concepts/more-concepts/nx-and-the-wrapper",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
@ -1555,222 +1766,222 @@
|
||||
"file": "shared/guides/global-nx",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/global-nx",
|
||||
"path": "/concepts/more-concepts/global-nx",
|
||||
"tags": []
|
||||
}
|
||||
],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts",
|
||||
"path": "/concepts/more-concepts",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/customizing-inputs": {
|
||||
"/concepts/more-concepts/customizing-inputs": {
|
||||
"id": "customizing-inputs",
|
||||
"name": "Customizing Inputs",
|
||||
"description": "",
|
||||
"file": "shared/concepts/customizing-inputs",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/customizing-inputs",
|
||||
"path": "/concepts/more-concepts/customizing-inputs",
|
||||
"tags": ["cache-task-results"]
|
||||
},
|
||||
"/more-concepts/incremental-builds": {
|
||||
"/concepts/more-concepts/incremental-builds": {
|
||||
"id": "incremental-builds",
|
||||
"name": "Incremental Builds",
|
||||
"description": "",
|
||||
"file": "shared/incremental-builds",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/incremental-builds",
|
||||
"path": "/concepts/more-concepts/incremental-builds",
|
||||
"tags": ["use-task-executors"]
|
||||
},
|
||||
"/more-concepts/illustrated-dte": {
|
||||
"/concepts/more-concepts/illustrated-dte": {
|
||||
"id": "illustrated-dte",
|
||||
"name": "Illustrated Distributed Task Execution",
|
||||
"description": "",
|
||||
"file": "shared/concepts/illustrated-dte-guide",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/illustrated-dte",
|
||||
"path": "/concepts/more-concepts/illustrated-dte",
|
||||
"tags": ["distribute-task-execution"]
|
||||
},
|
||||
"/more-concepts/turbo-and-nx": {
|
||||
"/concepts/more-concepts/turbo-and-nx": {
|
||||
"id": "turbo-and-nx",
|
||||
"name": "Nx and Turborepo",
|
||||
"description": "",
|
||||
"file": "shared/guides/turbo-and-nx",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/turbo-and-nx",
|
||||
"path": "/concepts/more-concepts/turbo-and-nx",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/why-monorepos": {
|
||||
"/concepts/more-concepts/why-monorepos": {
|
||||
"id": "why-monorepos",
|
||||
"name": "Monorepos",
|
||||
"description": "",
|
||||
"file": "shared/guides/why-monorepos",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/why-monorepos",
|
||||
"path": "/concepts/more-concepts/why-monorepos",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/dependency-management": {
|
||||
"/concepts/more-concepts/dependency-management": {
|
||||
"id": "dependency-management",
|
||||
"name": "Dependency Management",
|
||||
"description": "",
|
||||
"file": "shared/concepts/dependency-management",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/dependency-management",
|
||||
"path": "/concepts/more-concepts/dependency-management",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/code-sharing": {
|
||||
"/concepts/more-concepts/code-sharing": {
|
||||
"id": "code-sharing",
|
||||
"name": "Code Sharing",
|
||||
"description": "",
|
||||
"file": "shared/concepts/code-sharing",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/code-sharing",
|
||||
"path": "/concepts/more-concepts/code-sharing",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/monorepo-nx-enterprise": {
|
||||
"/concepts/more-concepts/monorepo-nx-enterprise": {
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"name": "Using Nx at Enterprises",
|
||||
"description": "",
|
||||
"file": "shared/monorepo-nx-enterprise",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/monorepo-nx-enterprise",
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise",
|
||||
"tags": ["enforce-project-boundaries", "use-code-generators"]
|
||||
},
|
||||
"/more-concepts/nx-daemon": {
|
||||
"/concepts/more-concepts/nx-daemon": {
|
||||
"id": "nx-daemon",
|
||||
"name": "Nx Daemon",
|
||||
"description": "",
|
||||
"file": "shared/daemon",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-daemon",
|
||||
"path": "/concepts/more-concepts/nx-daemon",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/nx-and-angular": {
|
||||
"/concepts/more-concepts/nx-and-angular": {
|
||||
"id": "nx-and-angular",
|
||||
"name": "Nx and the Angular CLI",
|
||||
"description": "",
|
||||
"file": "shared/guides/nx-and-angular-cli",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-and-angular",
|
||||
"path": "/concepts/more-concepts/nx-and-angular",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/folder-structure": {
|
||||
"/concepts/more-concepts/folder-structure": {
|
||||
"id": "folder-structure",
|
||||
"name": "Folder Structure",
|
||||
"description": "",
|
||||
"file": "shared/guides/integrated-repo-folder-structure",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/folder-structure",
|
||||
"path": "/concepts/more-concepts/folder-structure",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/nx-devkit-angular-devkit": {
|
||||
"/concepts/more-concepts/nx-devkit-angular-devkit": {
|
||||
"id": "nx-devkit-angular-devkit",
|
||||
"name": "Nx Devkit and Angular Devkit",
|
||||
"description": "",
|
||||
"file": "shared/guides/nx-devkit-angular-devkit",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-devkit-angular-devkit",
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit",
|
||||
"tags": ["create-your-own-plugin"]
|
||||
},
|
||||
"/more-concepts/micro-frontend-architecture": {
|
||||
"/concepts/more-concepts/micro-frontend-architecture": {
|
||||
"id": "micro-frontend-architecture",
|
||||
"name": "Micro Frontend Architecture",
|
||||
"description": "",
|
||||
"file": "shared/guides/module-federation/micro-frontend-architecture",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/micro-frontend-architecture",
|
||||
"path": "/concepts/more-concepts/micro-frontend-architecture",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/applications-and-libraries": {
|
||||
"/concepts/more-concepts/applications-and-libraries": {
|
||||
"id": "applications-and-libraries",
|
||||
"name": "Applications and Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/applications-and-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/applications-and-libraries",
|
||||
"path": "/concepts/more-concepts/applications-and-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
"/more-concepts/creating-libraries": {
|
||||
"/concepts/more-concepts/creating-libraries": {
|
||||
"id": "creating-libraries",
|
||||
"name": "Creating Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/creating-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/creating-libraries",
|
||||
"path": "/concepts/more-concepts/creating-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
"/more-concepts/library-types": {
|
||||
"/concepts/more-concepts/library-types": {
|
||||
"id": "library-types",
|
||||
"name": "Library Types",
|
||||
"description": "",
|
||||
"file": "shared/workspace/library-types",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/library-types",
|
||||
"path": "/concepts/more-concepts/library-types",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
"/more-concepts/grouping-libraries": {
|
||||
"/concepts/more-concepts/grouping-libraries": {
|
||||
"id": "grouping-libraries",
|
||||
"name": "Grouping Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/grouping-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/grouping-libraries",
|
||||
"path": "/concepts/more-concepts/grouping-libraries",
|
||||
"tags": ["enforce-project-boundaries"]
|
||||
},
|
||||
"/more-concepts/buildable-and-publishable-libraries": {
|
||||
"/concepts/more-concepts/buildable-and-publishable-libraries": {
|
||||
"id": "buildable-and-publishable-libraries",
|
||||
"name": "Buildable and Publishable Libraries",
|
||||
"description": "",
|
||||
"file": "shared/workspace/buildable-and-publishable-libraries",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/buildable-and-publishable-libraries",
|
||||
"path": "/concepts/more-concepts/buildable-and-publishable-libraries",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/how-project-graph-is-built": {
|
||||
"/concepts/more-concepts/how-project-graph-is-built": {
|
||||
"id": "how-project-graph-is-built",
|
||||
"name": "How the Project Graph is Built",
|
||||
"description": "",
|
||||
"file": "shared/concepts/how-project-graph-is-built",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/how-project-graph-is-built",
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built",
|
||||
"tags": ["explore-graph"]
|
||||
},
|
||||
"/more-concepts/nx-and-the-wrapper": {
|
||||
"/concepts/more-concepts/nx-and-the-wrapper": {
|
||||
"id": "nx-and-the-wrapper",
|
||||
"name": "Nx and the Nx Wrapper",
|
||||
"description": "",
|
||||
"file": "shared/guides/nx-and-the-wrapper",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/nx-and-the-wrapper",
|
||||
"path": "/concepts/more-concepts/nx-and-the-wrapper",
|
||||
"tags": []
|
||||
},
|
||||
"/more-concepts/global-nx": {
|
||||
"/concepts/more-concepts/global-nx": {
|
||||
"id": "global-nx",
|
||||
"name": "Managing your Global Nx Installation",
|
||||
"description": "",
|
||||
"file": "shared/guides/global-nx",
|
||||
"itemList": [],
|
||||
"isExternal": false,
|
||||
"path": "/more-concepts/global-nx",
|
||||
"path": "/concepts/more-concepts/global-nx",
|
||||
"tags": []
|
||||
},
|
||||
"/recipes": {
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
"file": "shared/concepts/customizing-inputs",
|
||||
"id": "customizing-inputs",
|
||||
"name": "Customizing Inputs",
|
||||
"path": "/more-concepts/customizing-inputs"
|
||||
"path": "/concepts/more-concepts/customizing-inputs"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
@ -158,7 +158,7 @@
|
||||
"file": "shared/concepts/how-project-graph-is-built",
|
||||
"id": "how-project-graph-is-built",
|
||||
"name": "How the Project Graph is Built",
|
||||
"path": "/more-concepts/how-project-graph-is-built"
|
||||
"path": "/concepts/more-concepts/how-project-graph-is-built"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
@ -216,7 +216,7 @@
|
||||
"file": "shared/concepts/illustrated-dte-guide",
|
||||
"id": "illustrated-dte",
|
||||
"name": "Illustrated Distributed Task Execution",
|
||||
"path": "/more-concepts/illustrated-dte"
|
||||
"path": "/concepts/more-concepts/illustrated-dte"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
@ -327,35 +327,35 @@
|
||||
"file": "shared/monorepo-nx-enterprise",
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"name": "Using Nx at Enterprises",
|
||||
"path": "/more-concepts/monorepo-nx-enterprise"
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"file": "shared/workspace/applications-and-libraries",
|
||||
"id": "applications-and-libraries",
|
||||
"name": "Applications and Libraries",
|
||||
"path": "/more-concepts/applications-and-libraries"
|
||||
"path": "/concepts/more-concepts/applications-and-libraries"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"file": "shared/workspace/creating-libraries",
|
||||
"id": "creating-libraries",
|
||||
"name": "Creating Libraries",
|
||||
"path": "/more-concepts/creating-libraries"
|
||||
"path": "/concepts/more-concepts/creating-libraries"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"file": "shared/workspace/library-types",
|
||||
"id": "library-types",
|
||||
"name": "Library Types",
|
||||
"path": "/more-concepts/library-types"
|
||||
"path": "/concepts/more-concepts/library-types"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"file": "shared/workspace/grouping-libraries",
|
||||
"id": "grouping-libraries",
|
||||
"name": "Grouping Libraries",
|
||||
"path": "/more-concepts/grouping-libraries"
|
||||
"path": "/concepts/more-concepts/grouping-libraries"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
@ -448,7 +448,7 @@
|
||||
"file": "shared/incremental-builds",
|
||||
"id": "incremental-builds",
|
||||
"name": "Incremental Builds",
|
||||
"path": "/more-concepts/incremental-builds"
|
||||
"path": "/concepts/more-concepts/incremental-builds"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
@ -548,7 +548,7 @@
|
||||
"file": "shared/monorepo-nx-enterprise",
|
||||
"id": "monorepo-nx-enterprise",
|
||||
"name": "Using Nx at Enterprises",
|
||||
"path": "/more-concepts/monorepo-nx-enterprise"
|
||||
"path": "/concepts/more-concepts/monorepo-nx-enterprise"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
@ -638,7 +638,7 @@
|
||||
"file": "shared/guides/nx-devkit-angular-devkit",
|
||||
"id": "nx-devkit-angular-devkit",
|
||||
"name": "Nx Devkit and Angular Devkit",
|
||||
"path": "/more-concepts/nx-devkit-angular-devkit"
|
||||
"path": "/concepts/more-concepts/nx-devkit-angular-devkit"
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
|
||||
@ -75,9 +75,9 @@ nx lint libName
|
||||
|
||||
Read more about:
|
||||
|
||||
- [Creating Libraries](/more-concepts/creating-libraries)
|
||||
- [Library Types](/more-concepts/library-types)
|
||||
- [Buildable and Publishable Libraries](/more-concepts/buildable-and-publishable-libraries)
|
||||
- [Creating Libraries](/concepts/more-concepts/creating-libraries)
|
||||
- [Library Types](/concepts/more-concepts/library-types)
|
||||
- [Buildable and Publishable Libraries](/concepts/more-concepts/buildable-and-publishable-libraries)
|
||||
|
||||
### Fallback to `@schematics/angular`
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"title": "Schema for Webpack Browser",
|
||||
"description": "The webpack-browser executor is very similar to the standard browser builder provided by the Angular Devkit. It allows you to build your Angular application to a build artifact that can be hosted online. There are some key differences: \n- Supports Custom Webpack Configurations \n- Supports Incremental Building",
|
||||
"examplesFile": "##### Using a custom webpack configuration\n\nThe executor supports providing a path to a custom webpack configuration. This allows you to customize how your Angular application is built. It currently supports the following types of webpack configurations:\n\n- `object`\n- `Function`\n- `Promise<object|Function>`\n\nThe executor will merge the provided configuration with the webpack configuration that Angular Devkit uses. The merge order is:\n\n- Angular Devkit Configuration\n- Provided Configuration\n\nTo use a custom webpack configuration when building your Angular application, change the `build` target in your `project.json` to match the following:\n\n```typescript\n\"build\": {\n \"executor\": \"@nx/angular:webpack-browser\",\n \"options\": {\n ...\n \"customWebpackConfig\": {\n \"path\": \"apps/appName/webpack.config.js\"\n }\n }\n}\n```\n\n##### Incrementally Building your Application\n\nThe executor supports incrementally building your Angular application by building the workspace libraries it depends on _(that have been marked as buildable)_ and then building your application using the built source of the libraries.\n\nThis can improve build time as the building of the workspace libraries can be cached, meaning they only have to be rebuilt if they have changed.\n\n> Note: There may be some additional overhead in the linking of the built libraries' sources which may reduce the overall improvement in build time. Therefore this approach only benefits large applications and would likely have a negative impact on small and medium applications. \n> You can read more about when to use incremental builds [here](/more-concepts/incremental-builds#when-should-i-use-incremental-builds).\n\nTo allow your Angular application to take advantage of incremental building, change the `build` target in your `project.json` to match the following:\n\n```typescript\n\"build\": {\n \"executor\": \"@nx/angular:webpack-browser\",\n \"options\": {\n ...\n \"buildLibsFromSource\": false\n }\n}\n```\n",
|
||||
"examplesFile": "##### Using a custom webpack configuration\n\nThe executor supports providing a path to a custom webpack configuration. This allows you to customize how your Angular application is built. It currently supports the following types of webpack configurations:\n\n- `object`\n- `Function`\n- `Promise<object|Function>`\n\nThe executor will merge the provided configuration with the webpack configuration that Angular Devkit uses. The merge order is:\n\n- Angular Devkit Configuration\n- Provided Configuration\n\nTo use a custom webpack configuration when building your Angular application, change the `build` target in your `project.json` to match the following:\n\n```typescript\n\"build\": {\n \"executor\": \"@nx/angular:webpack-browser\",\n \"options\": {\n ...\n \"customWebpackConfig\": {\n \"path\": \"apps/appName/webpack.config.js\"\n }\n }\n}\n```\n\n##### Incrementally Building your Application\n\nThe executor supports incrementally building your Angular application by building the workspace libraries it depends on _(that have been marked as buildable)_ and then building your application using the built source of the libraries.\n\nThis can improve build time as the building of the workspace libraries can be cached, meaning they only have to be rebuilt if they have changed.\n\n> Note: There may be some additional overhead in the linking of the built libraries' sources which may reduce the overall improvement in build time. Therefore this approach only benefits large applications and would likely have a negative impact on small and medium applications. \n> You can read more about when to use incremental builds [here](/concepts/more-concepts/incremental-builds#when-should-i-use-incremental-builds).\n\nTo allow your Angular application to take advantage of incremental building, change the `build` target in your `project.json` to match the following:\n\n```typescript\n\"build\": {\n \"executor\": \"@nx/angular:webpack-browser\",\n \"options\": {\n ...\n \"buildLibsFromSource\": false\n }\n}\n```\n",
|
||||
"type": "object",
|
||||
"presets": [
|
||||
{
|
||||
|
||||
@ -67,7 +67,7 @@ To make the library `publishable`, use the following command:
|
||||
nx g @nx/nest:lib my-nest-lib --publishable --importPath=@my-workspace/my-nest-lib
|
||||
```
|
||||
|
||||
> Read more about [building and publishing libraries here](/more-concepts/buildable-and-publishable-libraries).
|
||||
> Read more about [building and publishing libraries here](/concepts/more-concepts/buildable-and-publishable-libraries).
|
||||
|
||||
### Nest Generators
|
||||
|
||||
|
||||
@ -38,8 +38,8 @@ Nx allows you to create libraries with just one command. Some reasons you might
|
||||
- Publish a package to be used outside the monorepo
|
||||
- Better visualize the architecture using `nx graph`
|
||||
|
||||
For more information on Nx libraries, see our documentation on [Creating Libraries](/more-concepts/creating-libraries)
|
||||
and [Library Types](/more-concepts/library-types).
|
||||
For more information on Nx libraries, see our documentation on [Creating Libraries](/concepts/more-concepts/creating-libraries)
|
||||
and [Library Types](/concepts/more-concepts/library-types).
|
||||
|
||||
To generate a new library run:
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ nx g @nx/react:lib my-new-lib \
|
||||
--importPath=@myorg/my-new-lib
|
||||
```
|
||||
|
||||
Read more about [building and publishing libraries here](/more-concepts/buildable-and-publishable-libraries).
|
||||
Read more about [building and publishing libraries here](/concepts/more-concepts/buildable-and-publishable-libraries).
|
||||
|
||||
### Creating Components
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@ In the following section, we are going to see how to set up Storybook in these c
|
||||
|
||||
### Philosophy
|
||||
|
||||
Setting up Storybook on Nx reflects - and takes advantage of - the [mental model](/concepts/mental-model) of Nx, and especially the architecture of [Applications and Libraries](/more-concepts/applications-and-libraries). What that means, in essence, is that you still maintain the individual Storybook instances (per project) which you use for testing and local development, but you also keep one extra “container” for publishing, that serves as a single entry point. Let’s see this in more detail.
|
||||
Setting up Storybook on Nx reflects - and takes advantage of - the [mental model](/concepts/mental-model) of Nx, and especially the architecture of [Applications and Libraries](/concepts/more-concepts/applications-and-libraries). What that means, in essence, is that you still maintain the individual Storybook instances (per project) which you use for testing and local development, but you also keep one extra “container” for publishing, that serves as a single entry point. Let’s see this in more detail.
|
||||
|
||||
#### Local development and testing
|
||||
|
||||
@ -121,7 +121,7 @@ Since each Storybook, in this case, is attached to a project, so is the serving
|
||||
|
||||
#### Publishing
|
||||
|
||||
When you are publishing your Storybook, you can follow the same principles described in the [Applications and Libraries Mental Model](/more-concepts/applications-and-libraries#mental-model) documentation page. The general idea is to have one central Storybook container, into which you are going to gather your stories from multiple libraries.
|
||||
When you are publishing your Storybook, you can follow the same principles described in the [Applications and Libraries Mental Model](/concepts/more-concepts/applications-and-libraries#mental-model) documentation page. The general idea is to have one central Storybook container, into which you are going to gather your stories from multiple libraries.
|
||||
|
||||
You can think of the central Storybook container as a grouping of similar-concept or same-scope UI parts of your workspace. In the same way you are scoping libraries, you can group your stories as well.
|
||||
|
||||
@ -131,7 +131,7 @@ Then, according to your use-case, you can have one central Storybook for your wh
|
||||
In order to achieve some things mentioned above, you may use [Storybook Composition](/packages/storybook/documents/storybook-composition-setup). However, in this case, you would still need to build each project’s Storybook individually, and also deploy it individually. So in the cases where you have multiple projects, Storybook Composition would not be very efficient.
|
||||
{% /callout %}
|
||||
|
||||
Before moving on to the examples section, it could be useful to read the [Library Types](/more-concepts/library-types) documentation page and the [Grouping libraries](/more-concepts/grouping-libraries) documentation page. These could help you decide which way fits your use case better.
|
||||
Before moving on to the examples section, it could be useful to read the [Library Types](/concepts/more-concepts/library-types) documentation page and the [Grouping libraries](/concepts/more-concepts/grouping-libraries) documentation page. These could help you decide which way fits your use case better.
|
||||
|
||||
## Examples / Use cases
|
||||
|
||||
|
||||
@ -379,13 +379,6 @@
|
||||
"id": "affected",
|
||||
"file": "shared/using-nx/affected"
|
||||
},
|
||||
{
|
||||
"name": "More Concept Guides »",
|
||||
"id": "more-concept-guides",
|
||||
"path": "/more-concepts"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "More Concepts",
|
||||
"id": "more-concepts",
|
||||
@ -507,7 +500,10 @@
|
||||
"file": "shared/guides/global-nx"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"name": "Recipes",
|
||||
"id": "recipes",
|
||||
|
||||
@ -121,7 +121,7 @@ When you run a task, Nx uses the inputs for your task to create a hash that is u
|
||||
|
||||
If this index does not exist, Nx runs the command and if the command succeeds, it stores the result in the cache.
|
||||
|
||||
{% card title="More On Customizing Inputs" description="See the Customizing Inputs Guide for more details on how to set inputs for your tasks." url="/more-concepts/customizing-inputs" /%}
|
||||
{% card title="More On Customizing Inputs" description="See the Customizing Inputs Guide for more details on how to set inputs for your tasks." url="/concepts/more-concepts/customizing-inputs" /%}
|
||||
|
||||
### Outputs
|
||||
|
||||
|
||||
@ -101,9 +101,9 @@ The setup includes..
|
||||
Compared to the Angular CLI, you might notice the addition of an `nx.json` file and the absence of an `angular.json` file. Instead of the `angular.json` file there is a `project.json` file. Each file is described below:
|
||||
|
||||
| File | Description |
|
||||
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `nx.json` | This is where we can fine-tune how Nx works, define the [cacheable operations](/core-features/cache-task-results), our [task pipelines](/concepts/task-pipeline-configuration) as well as defaults for the Nx generators. Find more details in [the reference docs](/reference/nx-json). |
|
||||
| `project.json` | Nx uses this file to define targets that can be run, similar to how the Angular CLI uses the `angular.json` file. If you're familiar with the Angular CLI you should have no difficulty navigating the `project.json` file. If you're curious how the two compare, you can learn more in [the Nx and Angular CLI comparision article](/more-concepts/nx-and-angular). The [project-configuration documentation page](/reference/project-configuration) has more details on how to use the `project.json` file. |
|
||||
| `project.json` | Nx uses this file to define targets that can be run, similar to how the Angular CLI uses the `angular.json` file. If you're familiar with the Angular CLI you should have no difficulty navigating the `project.json` file. If you're curious how the two compare, you can learn more in [the Nx and Angular CLI comparision article](/concepts/more-concepts/nx-and-angular). The [project-configuration documentation page](/reference/project-configuration) has more details on how to use the `project.json` file. |
|
||||
|
||||
## Serving the App
|
||||
|
||||
@ -642,7 +642,7 @@ Once you modularize your codebase you want to make sure that the modules are not
|
||||
|
||||
When building these kinds of constraints you usually have two dimensions:
|
||||
|
||||
- **type of project:** what is the type of your library. Example: "feature" library, "utility" library, "data-access" library, "ui" library (see [library types](/more-concepts/library-types))
|
||||
- **type of project:** what is the type of your library. Example: "feature" library, "utility" library, "data-access" library, "ui" library (see [library types](/concepts/more-concepts/library-types))
|
||||
- **scope (domain) of the project:** what domain area is covered by the project. Example: "orders", "products", "shared" ... this really depends on the type of product you're developing
|
||||
|
||||
Nx comes with a generic mechanism that allows you to assign "tags" to projects. "tags" are arbitrary strings you can assign to a project that can be used later when defining boundaries between projects. For example, go to the `project.json` of your `modules-orders` library and assign the tags `type:feature` and `scope:orders` to it.
|
||||
|
||||
@ -88,7 +88,7 @@ With this configuration, the build script will only consider the non-test files
|
||||
The test script will consider all the source files for the project under test and only non-test files of its
|
||||
dependencies. The test script will also consider the jest config file at the root of the workspace.
|
||||
|
||||
For more information about modifying `inputs` and `namedInputs` for your own repo, read [Customizing Inputs](/more-concepts/customizing-inputs)
|
||||
For more information about modifying `inputs` and `namedInputs` for your own repo, read [Customizing Inputs](/concepts/more-concepts/customizing-inputs)
|
||||
|
||||
### Filesets
|
||||
|
||||
|
||||
@ -13,9 +13,9 @@ There are two styles of monorepos that you can build with Nx: integrated repos a
|
||||
|
||||
## Package-Based Repos
|
||||
|
||||
A package-based repo is a collection of packages that depend on each other via `package.json` files and nested `node_modules`. With this setup, you typically have [different dependencies for each project](/more-concepts/dependency-management). Build tools like Jest and Webpack work as usual, since everything is resolved as if each package was in a separate repo and all of its dependencies were published to npm. Moving an existing package into a package-based repo is very easy since you generally leave that package's existing build tooling untouched. Creating a new package inside the repo is just as difficult as spinning up a new repo since you have to create all the build tooling from scratch.
|
||||
A package-based repo is a collection of packages that depend on each other via `package.json` files and nested `node_modules`. With this setup, you typically have [different dependencies for each project](/concepts/more-concepts/dependency-management). Build tools like Jest and Webpack work as usual, since everything is resolved as if each package was in a separate repo and all of its dependencies were published to npm. Moving an existing package into a package-based repo is very easy since you generally leave that package's existing build tooling untouched. Creating a new package inside the repo is just as difficult as spinning up a new repo since you have to create all the build tooling from scratch.
|
||||
|
||||
Lerna, Yarn, Lage, [Turborepo](/more-concepts/turbo-and-nx) and Nx (without plugins) support this style.
|
||||
Lerna, Yarn, Lage, [Turborepo](/concepts/more-concepts/turbo-and-nx) and Nx (without plugins) support this style.
|
||||
|
||||
{% cards %}
|
||||
{% card title="Tutorial: Getting Started with Package-Based Repos" description="Walkthrough for creating a package-based monorepo with Nx" type="documentation" url="/getting-started/tutorials/package-based-repo-tutorial" /%}
|
||||
@ -23,7 +23,7 @@ Lerna, Yarn, Lage, [Turborepo](/more-concepts/turbo-and-nx) and Nx (without plug
|
||||
|
||||
## Integrated Repos
|
||||
|
||||
An integrated repo contains projects that depend on each other through standard import statements. There is typically a [single version of every dependency](/more-concepts/dependency-management) defined at the root. Sometimes build tools like Jest and Webpack need to be wrapped to work correctly. It's harder to add an existing package to this repo style because the build tooling for that package may need to be modified. It's straightforward to add a brand-new project to the repo because all the tooling decisions have already been made.
|
||||
An integrated repo contains projects that depend on each other through standard import statements. There is typically a [single version of every dependency](/concepts/more-concepts/dependency-management) defined at the root. Sometimes build tools like Jest and Webpack need to be wrapped to work correctly. It's harder to add an existing package to this repo style because the build tooling for that package may need to be modified. It's straightforward to add a brand-new project to the repo because all the tooling decisions have already been made.
|
||||
|
||||
Bazel and Nx (with plugins) support this style.
|
||||
|
||||
|
||||
@ -64,7 +64,7 @@ header/
|
||||
└── dist/ <-- this folder gets recreated
|
||||
```
|
||||
|
||||
If your task creates output artifacts in a different location, you can [change the output folder(s)](/reference/project-configuration#outputs) that are cached. You can also [customize which inputs](/more-concepts/customizing-inputs) will invalidate the cache if they are changed.
|
||||
If your task creates output artifacts in a different location, you can [change the output folder(s)](/reference/project-configuration#outputs) that are cached. You can also [customize which inputs](/concepts/more-concepts/customizing-inputs) will invalidate the cache if they are changed.
|
||||
|
||||
## Advanced Caching
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Global Implicit Dependencies
|
||||
|
||||
Since v14.4, Nx supports [`inputs` and `namedInputs`](/more-concepts/customizing-inputs) for setting up implicit dependencies. As of Nx v16, the `implicitDependencies` defined in `nx.json` are ignored and do not influence the affected graph. This field will be removed in v17. The [`implicitDependencies` in the project configuration](/reference/project-configuration#implicitdependencies) are still the best way to manually set up a dependency between two projects that Nx is not able to detect automatically.
|
||||
Since v14.4, Nx supports [`inputs` and `namedInputs`](/concepts/more-concepts/customizing-inputs) for setting up implicit dependencies. As of Nx v16, the `implicitDependencies` defined in `nx.json` are ignored and do not influence the affected graph. This field will be removed in v17. The [`implicitDependencies` in the project configuration](/reference/project-configuration#implicitdependencies) are still the best way to manually set up a dependency between two projects that Nx is not able to detect automatically.
|
||||
|
||||
## Projects Depending on Global Files
|
||||
|
||||
@ -34,7 +34,7 @@ To express the same dependencies with `inputs` and `namedInputs`, modify the def
|
||||
|
||||
The `sharedGlobals` are included in the `default` named input, so most targets will be set up to depend on them.
|
||||
|
||||
For a more detailed explanation, read the [Customizing Inputs and Named Inputs guide](/more-concepts/customizing-inputs)
|
||||
For a more detailed explanation, read the [Customizing Inputs and Named Inputs guide](/concepts/more-concepts/customizing-inputs)
|
||||
|
||||
### Dependencies on Sections of the Root `package.json` File
|
||||
|
||||
|
||||
@ -76,4 +76,4 @@ You can install Nx globally. Depending on your package manager, use one of the f
|
||||
|
||||
The advantage of a global installation is that you don't have to prefix your commands with npx, yarn or pnpm. The global Nx installation hands off the process execution to the local Nx installation in your repository, which eliminates any issues with outdated globally installed packages.
|
||||
|
||||
Learn more about [managing and troubleshooting a global Nx installation](/more-concepts/global-nx).
|
||||
Learn more about [managing and troubleshooting a global Nx installation](/concepts/more-concepts/global-nx).
|
||||
|
||||
@ -25,5 +25,5 @@ Nx is built in a modular fashion to let you only use the features you need.
|
||||
- The **Nx** package provides fundamental technology-agnostic capabilities such as: [workspace analysis](/core-features/explore-graph), [task running](/core-features/run-tasks), [caching](/core-features/cache-task-results), [distribution](/core-features/distribute-task-execution), [code generation](/core-features/plugin-features/use-code-generators) and [automated code migrations](/core-features/automate-updating-dependencies).
|
||||
- **Plugins** are NPM packages that built on top of the fundamental capabilities provided by the Nx package. Nx plugins contain [code generators](/core-features/plugin-features/use-code-generators), [executors](/core-features/plugin-features/use-task-executors) (to abstract lower-level build tooling) and automated code migrations for keeping your tools up to date. Contrary to the Nx package, which works the same way with any JS or non-JS project, plugins are usually technology specific. For instance, `@nx/react` adds support for building React apps and libs, `@nx/cypress` adds e2e testing capabilities with Cypress. Plugins make developers more productive by removing any friction of integrating different tools with each other and by providing utilities to keep them up to date. The Nx team maintains plugins for React, Next, Remix, Angular, Jest, Cypress, Storybook and more. You can use the `@nx/plugin` package to easily [scaffold a new plugin](/plugins/intro/getting-started) or even just [automate your local workspace](/plugins/recipes/local-generators). There are also more than 80 [community plugins](/plugins/registry).
|
||||
- **Devkit** is a set of utilities for [building Nx plugins](/plugins/intro/getting-started).
|
||||
- **Nx Cloud** helps scale your project on CI by [adding remote caching](/concepts/how-caching-works) and [distributed task execution](/more-concepts/illustrated-dte). It also improves developer ergonomics by integrating with GitHub, GitLab and BitBucket and providing searchable structured logs. Learn more at [nx.app](https://nx.app).
|
||||
- **Nx Cloud** helps scale your project on CI by [adding remote caching](/concepts/how-caching-works) and [distributed task execution](/concepts/more-concepts/illustrated-dte). It also improves developer ergonomics by integrating with GitHub, GitLab and BitBucket and providing searchable structured logs. Learn more at [nx.app](https://nx.app).
|
||||
- **Nx Console** is an extension for **VSCode, IntelliJ and VIM**. It provides code autocompletion, interactive generators, workspace visualizations, powerful refactorings and more. You can [install it here](/core-features/integrate-with-editors).
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
Nx can be ran in a total of 3 ways:
|
||||
|
||||
- Through your package manager (e.g. `npx nx`, `yarn nx`, or `pnpm exec nx`)
|
||||
- Through [./nx or ./nx.bat](/more-concepts/nx-and-the-wrapper)
|
||||
- Through [./nx or ./nx.bat](/concepts/more-concepts/nx-and-the-wrapper)
|
||||
- Through a global Nx installation (e.g. `nx`)
|
||||
|
||||
With a global Nx installation, Nx looks for the local copy of Nx in your repo and hands off the process execution to it. This means that whichever version of Nx is installed locally in your repo is still the version of Nx that runs your code. For the most part, this can eliminate any issues that may arise from the global install being outdated.
|
||||
|
||||
@ -440,7 +440,7 @@ first before building the remotes.
|
||||
|
||||
## Summary
|
||||
|
||||
You could use Module Federation to implement [micro frontends](/more-concepts/micro-frontend-architecture), but this
|
||||
You could use Module Federation to implement [micro frontends](/concepts/more-concepts/micro-frontend-architecture), but this
|
||||
guide showed how to use it to speed up your builds.
|
||||
|
||||
Module Federation allows you to split a single build process into multiple processes which can run in parallel or even
|
||||
|
||||
@ -157,8 +157,8 @@ Nx allows you to create libraries with just one command. Some reasons you might
|
||||
- Publish a package to be used outside the monorepo
|
||||
- Better visualize the architecture using `npx nx graph`
|
||||
|
||||
For more information on Nx libraries, see our documentation on [Creating Libraries](/more-concepts/creating-libraries)
|
||||
and [Library Types](/more-concepts/library-types).
|
||||
For more information on Nx libraries, see our documentation on [Creating Libraries](/concepts/more-concepts/creating-libraries)
|
||||
and [Library Types](/concepts/more-concepts/library-types).
|
||||
|
||||
To generate a new library run:
|
||||
|
||||
|
||||
@ -8,13 +8,13 @@ If you are familiar with Lerna or Yarn workspaces, check out [this guide](/recip
|
||||
|
||||
## What are the benefits of a monorepo?
|
||||
|
||||
- **Shared code and visibility** - [Keeps your code DRY across your entire organization.](/more-concepts/code-sharing) Reuse validation code, UI components, and types across the codebase. Reuse code between the backend, the frontend, and utility libraries.
|
||||
- **Shared code and visibility** - [Keeps your code DRY across your entire organization.](/concepts/more-concepts/code-sharing) Reuse validation code, UI components, and types across the codebase. Reuse code between the backend, the frontend, and utility libraries.
|
||||
|
||||
- **Atomic changes** - Change a server API and modify the downstream applications that consume that API in the same commit. You can change a button component in a shared library and the applications that use that component in the same commit. A monorepo saves the pain of trying to coordinate commits across multiple repositories.
|
||||
|
||||
- **Developer mobility** - Get a consistent way of building and testing applications written using different tools and technologies. Developers can confidently contribute to other teams’ applications and verify that their changes are safe.
|
||||
|
||||
- **Single set of dependencies** - [Use a single version of all third-party dependencies](/more-concepts/dependency-management), reducing inconsistencies between applications. Less actively developed applications are still kept up-to-date with the latest version of a framework, library, or build tool.
|
||||
- **Single set of dependencies** - [Use a single version of all third-party dependencies](/concepts/more-concepts/dependency-management), reducing inconsistencies between applications. Less actively developed applications are still kept up-to-date with the latest version of a framework, library, or build tool.
|
||||
|
||||
## Why not just code collocation?
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ On the other hand, the executor of a **buildable library**, performs a subset of
|
||||
nx g @nx/react:lib mylib --buildable
|
||||
```
|
||||
|
||||
Read more about [Publishable and Buildable Nx Libraries here.](/more-concepts/buildable-and-publishable-libraries)
|
||||
Read more about [Publishable and Buildable Nx Libraries here.](/concepts/more-concepts/buildable-and-publishable-libraries)
|
||||
|
||||
## Nx computation cache and Nx Cloud
|
||||
|
||||
|
||||
@ -109,13 +109,13 @@ For example, excluding markdown files from the `lint` task cache:
|
||||
|
||||
This includes all TypeScript files, but excludes markdown files. As a result, changing your README won't invalidate your "lint cache".
|
||||
|
||||
Learn more about [Nx Inputs](/more-concepts/customizing-inputs).
|
||||
Learn more about [Nx Inputs](/concepts/more-concepts/customizing-inputs).
|
||||
|
||||
## Learn More
|
||||
|
||||
{% cards %}
|
||||
|
||||
{% card title="Customizing Inputs and Named Inputs" description="Learn more about how to fine-tune caching with custom inputs" type="documentation" url="/more-concepts/customizing-inputs" /%}
|
||||
{% card title="Customizing Inputs and Named Inputs" description="Learn more about how to fine-tune caching with custom inputs" type="documentation" url="/concepts/more-concepts/customizing-inputs" /%}
|
||||
|
||||
{% card title="Cache Task Results" description="Learn more about how caching works" type="documentation" url="/core-features/cache-task-results" /%}
|
||||
|
||||
|
||||
@ -90,7 +90,7 @@ This allows for incrementally adopting Nx in your existing workspace.
|
||||
|
||||
{% card title="Nx Ignore" description="Learn about how to ignore certain projects using .nxignore" type="documentation" url="/reference/nxignore" /%}
|
||||
|
||||
{% card title="Nx and Turbo" description="Read about how Nx compares to Turborepo" url="/more-concepts/turbo-and-nx" /%}
|
||||
{% card title="Nx and Turbo" description="Read about how Nx compares to Turborepo" url="/concepts/more-concepts/turbo-and-nx" /%}
|
||||
|
||||
{% card title="Nx and Lerna" description="Read about how Nx and Lerna can be used together" url="/recipes/adopting-nx/lerna-and-nx" /%}
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ For a discussion on #2, see [dependency management](#dependency-management) belo
|
||||
|
||||
Nx comes with a powerful task scheduler that intelligently runs operations and makes sure they are quick. This happens in a variety of ways:
|
||||
|
||||
- **Parallelization and task dependencies -** Nx automatically [knows how your projects relate to each other](/more-concepts/how-project-graph-is-built). As a result, if `project-a` depends on `project-b` and you run the build command for `project-a`, Nx first runs the builds for all of `project-a`'s dependencies and then the invoked project itself. Nx sorts these tasks to maximize parallelism.
|
||||
- **Parallelization and task dependencies -** Nx automatically [knows how your projects relate to each other](/concepts/more-concepts/how-project-graph-is-built). As a result, if `project-a` depends on `project-b` and you run the build command for `project-a`, Nx first runs the builds for all of `project-a`'s dependencies and then the invoked project itself. Nx sorts these tasks to maximize parallelism.
|
||||
- **Only run what changed -** Using [Nx affected commands](/concepts/affected) you only really execute tasks on the projects that changed, compared to a given baseline (usually the main branch).
|
||||
- **Caching -** You get Nx's [computation caching](/concepts/how-caching-works) for free. All operations, including artifacts and terminal output are restored from the cache (if present) in a completely transparent way without disrupting your DX. No configuration needed. Obviously this results in an incredible speed improvement.
|
||||
- **Distributed Task Execution -** This is unique to Nx. In combination with Nx Cloud your tasks are automatically distributed across CI agents, taking into account build order, maximizing parallelization and thus agent utilization. It even learns from previous runs to better distribute tasks! [Learn more](/concepts/dte)
|
||||
|
||||
@ -65,7 +65,7 @@ If you're not ready to make the change yet, you can come back to this later:
|
||||
|
||||
{% cards %}
|
||||
|
||||
{% card title="Nx and the Angular CLI" description="Differences between Nx and the Angular CLI" type="documentation" url="/more-concepts/nx-and-angular" /%}
|
||||
{% card title="Nx and the Angular CLI" description="Differences between Nx and the Angular CLI" type="documentation" url="/concepts/more-concepts/nx-and-angular" /%}
|
||||
|
||||
{% card title="Angular CLI to Integrated Nx Workspace" description="Change the folder structure to use an integrated style" type="documentation" url="/recipes/adopting-nx-angular/angular-integrated" /%}
|
||||
|
||||
|
||||
@ -75,9 +75,9 @@ nx lint libName
|
||||
|
||||
Read more about:
|
||||
|
||||
- [Creating Libraries](/more-concepts/creating-libraries)
|
||||
- [Library Types](/more-concepts/library-types)
|
||||
- [Buildable and Publishable Libraries](/more-concepts/buildable-and-publishable-libraries)
|
||||
- [Creating Libraries](/concepts/more-concepts/creating-libraries)
|
||||
- [Library Types](/concepts/more-concepts/library-types)
|
||||
- [Buildable and Publishable Libraries](/concepts/more-concepts/buildable-and-publishable-libraries)
|
||||
|
||||
### Fallback to `@schematics/angular`
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ To make the library `publishable`, use the following command:
|
||||
nx g @nx/nest:lib my-nest-lib --publishable --importPath=@my-workspace/my-nest-lib
|
||||
```
|
||||
|
||||
> Read more about [building and publishing libraries here](/more-concepts/buildable-and-publishable-libraries).
|
||||
> Read more about [building and publishing libraries here](/concepts/more-concepts/buildable-and-publishable-libraries).
|
||||
|
||||
### Nest Generators
|
||||
|
||||
|
||||
@ -38,8 +38,8 @@ Nx allows you to create libraries with just one command. Some reasons you might
|
||||
- Publish a package to be used outside the monorepo
|
||||
- Better visualize the architecture using `nx graph`
|
||||
|
||||
For more information on Nx libraries, see our documentation on [Creating Libraries](/more-concepts/creating-libraries)
|
||||
and [Library Types](/more-concepts/library-types).
|
||||
For more information on Nx libraries, see our documentation on [Creating Libraries](/concepts/more-concepts/creating-libraries)
|
||||
and [Library Types](/concepts/more-concepts/library-types).
|
||||
|
||||
To generate a new library run:
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ nx g @nx/react:lib my-new-lib \
|
||||
--importPath=@myorg/my-new-lib
|
||||
```
|
||||
|
||||
Read more about [building and publishing libraries here](/more-concepts/buildable-and-publishable-libraries).
|
||||
Read more about [building and publishing libraries here](/concepts/more-concepts/buildable-and-publishable-libraries).
|
||||
|
||||
### Creating Components
|
||||
|
||||
|
||||
@ -91,7 +91,7 @@ In the following section, we are going to see how to set up Storybook in these c
|
||||
|
||||
### Philosophy
|
||||
|
||||
Setting up Storybook on Nx reflects - and takes advantage of - the [mental model](/concepts/mental-model) of Nx, and especially the architecture of [Applications and Libraries](/more-concepts/applications-and-libraries). What that means, in essence, is that you still maintain the individual Storybook instances (per project) which you use for testing and local development, but you also keep one extra “container” for publishing, that serves as a single entry point. Let’s see this in more detail.
|
||||
Setting up Storybook on Nx reflects - and takes advantage of - the [mental model](/concepts/mental-model) of Nx, and especially the architecture of [Applications and Libraries](/concepts/more-concepts/applications-and-libraries). What that means, in essence, is that you still maintain the individual Storybook instances (per project) which you use for testing and local development, but you also keep one extra “container” for publishing, that serves as a single entry point. Let’s see this in more detail.
|
||||
|
||||
#### Local development and testing
|
||||
|
||||
@ -121,7 +121,7 @@ Since each Storybook, in this case, is attached to a project, so is the serving
|
||||
|
||||
#### Publishing
|
||||
|
||||
When you are publishing your Storybook, you can follow the same principles described in the [Applications and Libraries Mental Model](/more-concepts/applications-and-libraries#mental-model) documentation page. The general idea is to have one central Storybook container, into which you are going to gather your stories from multiple libraries.
|
||||
When you are publishing your Storybook, you can follow the same principles described in the [Applications and Libraries Mental Model](/concepts/more-concepts/applications-and-libraries#mental-model) documentation page. The general idea is to have one central Storybook container, into which you are going to gather your stories from multiple libraries.
|
||||
|
||||
You can think of the central Storybook container as a grouping of similar-concept or same-scope UI parts of your workspace. In the same way you are scoping libraries, you can group your stories as well.
|
||||
|
||||
@ -131,7 +131,7 @@ Then, according to your use-case, you can have one central Storybook for your wh
|
||||
In order to achieve some things mentioned above, you may use [Storybook Composition](/packages/storybook/documents/storybook-composition-setup). However, in this case, you would still need to build each project’s Storybook individually, and also deploy it individually. So in the cases where you have multiple projects, Storybook Composition would not be very efficient.
|
||||
{% /callout %}
|
||||
|
||||
Before moving on to the examples section, it could be useful to read the [Library Types](/more-concepts/library-types) documentation page and the [Grouping libraries](/more-concepts/grouping-libraries) documentation page. These could help you decide which way fits your use case better.
|
||||
Before moving on to the examples section, it could be useful to read the [Library Types](/concepts/more-concepts/library-types) documentation page and the [Grouping libraries](/concepts/more-concepts/grouping-libraries) documentation page. These could help you decide which way fits your use case better.
|
||||
|
||||
## Examples / Use cases
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
This guide extends the
|
||||
[Using Storybook in a Nx workspace - Best practices](/packages/storybook/documents/best-practices) guide. In that guide, we discussed the best practices of using Storybook in a Nx workspace. We explained the main concepts and the mental model of how to best set up Storybook. In this guide, we are going to see how to put that into practice, by looking at a real-world example. We are going to see how you can publish one Storybook per scope (eg. theme, app, framework) for your workspace.
|
||||
|
||||
Sometimes, you have multiple apps and libraries, and each of these is associated with a specific scope. You can read more about grouping libraries and scoping them in the [Library Types](/more-concepts/library-types) documentation page, and also in the [Code Organization and Naming Conventions](/more-concepts/monorepo-nx-enterprise#code-organization-&-naming-conventions) documentation section.
|
||||
Sometimes, you have multiple apps and libraries, and each of these is associated with a specific scope. You can read more about grouping libraries and scoping them in the [Library Types](/concepts/more-concepts/library-types) documentation page, and also in the [Code Organization and Naming Conventions](/concepts/more-concepts/monorepo-nx-enterprise#code-organization-&-naming-conventions) documentation section.
|
||||
|
||||
In this case, you can have one Storybook instance per scope. If you follow the folder organization convention described above, it is easy to configure Storybook to import all the stories under a specific folder, for example, which are associated with a specific app or scope.
|
||||
|
||||
|
||||
@ -98,7 +98,7 @@ Documentation site generated in /docs
|
||||
Nx read the output from the cache instead of running the command for 1 out of 1 tasks.
|
||||
```
|
||||
|
||||
Read more about [cacheableOperations](/core-features/cache-task-results) and fine-tuning caching with [task inputs](/more-concepts/customizing-inputs).
|
||||
Read more about [cacheableOperations](/core-features/cache-task-results) and fine-tuning caching with [task inputs](/concepts/more-concepts/customizing-inputs).
|
||||
|
||||
## Keep using NPM to run scripts rather than Nx
|
||||
|
||||
|
||||
@ -8,13 +8,13 @@ This is a short list of Nx-specific terms that will help you understand the rest
|
||||
|
||||
A [project](#project) that can run on its own. Generally uses [libraries](#library).
|
||||
|
||||
> See: [Applications and Libraries](/more-concepts/applications-and-libraries)
|
||||
> See: [Applications and Libraries](/concepts/more-concepts/applications-and-libraries)
|
||||
|
||||
### Buildable Library
|
||||
|
||||
A [library](#library) that has a `build` [target](#target). Some libraries can be generated with a `build` target using the `--buildable` flag.
|
||||
|
||||
> See: [Publishable and Buildable Nx Libraries](/more-concepts/buildable-and-publishable-libraries)
|
||||
> See: [Publishable and Buildable Nx Libraries](/concepts/more-concepts/buildable-and-publishable-libraries)
|
||||
|
||||
### Cache
|
||||
|
||||
@ -32,7 +32,7 @@ When the [cache inputs](#cache-inputs) for a [task](#task) match an existing ent
|
||||
|
||||
Everything that might change the output of a [task](#task). This may include source code, task options, environment variables and other settings determined at run time. These values are combined as a hash to serve as a key for an entry in the [cache](#cache).
|
||||
|
||||
> See: [Customizing Inputs and Named Inputs](/more-concepts/customizing-inputs)
|
||||
> See: [Customizing Inputs and Named Inputs](/concepts/more-concepts/customizing-inputs)
|
||||
|
||||
### Cache Miss
|
||||
|
||||
@ -98,13 +98,13 @@ A repository using Nx [plugins](#plugin) to boost efficiency and ease of mainten
|
||||
|
||||
A [project](#project) that is used by [applications](#application) or other [libraries](#library).
|
||||
|
||||
> See: [Applications and Libraries](/more-concepts/applications-and-libraries)
|
||||
> See: [Applications and Libraries](/concepts/more-concepts/applications-and-libraries)
|
||||
|
||||
### Monolith
|
||||
|
||||
A large [application](#application) that is difficult to separate into smaller pieces.
|
||||
|
||||
> See: [Applications and Libraries](/more-concepts/applications-and-libraries)
|
||||
> See: [Applications and Libraries](/concepts/more-concepts/applications-and-libraries)
|
||||
|
||||
### Monorepo
|
||||
|
||||
@ -146,13 +146,13 @@ Related [projects](#project) spread across multiple repositories.
|
||||
|
||||
The unit of code on which a [task](#task) can be run. A project can be an [application](#application) or a [library](#library).
|
||||
|
||||
> See: [Applications and Libraries](/more-concepts/applications-and-libraries)
|
||||
> See: [Applications and Libraries](/concepts/more-concepts/applications-and-libraries)
|
||||
|
||||
### Publishable Library
|
||||
|
||||
A [library](#library) that has a `publish` [target](#target). Some libraries can be generated with a `publish` target using the `--publishable` flag.
|
||||
|
||||
> See: [Publishable and Buildable Nx Libraries](/more-concepts/buildable-and-publishable-libraries)
|
||||
> See: [Publishable and Buildable Nx Libraries](/concepts/more-concepts/buildable-and-publishable-libraries)
|
||||
|
||||
### Root-Level Project
|
||||
|
||||
|
||||
@ -116,7 +116,7 @@ In this case Nx will use the right `production` input for each project.
|
||||
|
||||
{% cards %}
|
||||
{% card title="Project Configuration reference" type="documentation" description="inputs and namedInputs are also described in the project configuration reference" url="/reference/project-configuration#inputs-&-namedinputs" /%}
|
||||
{% card title="Customizing inputs and namedInputs" type="documentation" description="This guide walks through a few examples of how to customize inputs and namedInputs" url="/more-concepts/customizing-inputs" /%}
|
||||
{% card title="Customizing inputs and namedInputs" type="documentation" description="This guide walks through a few examples of how to customize inputs and namedInputs" url="/concepts/more-concepts/customizing-inputs" /%}
|
||||
{% /cards %}
|
||||
|
||||
### Target Defaults
|
||||
|
||||
@ -263,7 +263,7 @@ sources (non-test sources) of its dependencies. In other words, it treats test s
|
||||
|
||||
{% cards %}
|
||||
{% card title="nx.json reference" type="documentation" description="inputs and namedInputs are also described in the nx.json reference" url="/reference/nx-json#inputs-&-namedinputs" /%}
|
||||
{% card title="Customizing inputs and namedInputs" type="documentation" description="This guide walks through a few examples of how to customize inputs and namedInputs" url="/more-concepts/customizing-inputs" /%}
|
||||
{% card title="Customizing inputs and namedInputs" type="documentation" description="This guide walks through a few examples of how to customize inputs and namedInputs" url="/concepts/more-concepts/customizing-inputs" /%}
|
||||
{% /cards %}
|
||||
|
||||
### Outputs
|
||||
|
||||
@ -67,29 +67,28 @@
|
||||
- [Improve Worst Case CI Times](/concepts/dte)
|
||||
- [Task Pipeline Configuration](/concepts/task-pipeline-configuration)
|
||||
- [Affected](/concepts/affected)
|
||||
- [More Concept Guides »](/more-concepts)
|
||||
- [More Concepts](/more-concepts)
|
||||
- [Customizing Inputs](/more-concepts/customizing-inputs)
|
||||
- [Incremental Builds](/more-concepts/incremental-builds)
|
||||
- [Illustrated Distributed Task Execution](/more-concepts/illustrated-dte)
|
||||
- [Nx and Turborepo](/more-concepts/turbo-and-nx)
|
||||
- [Monorepos](/more-concepts/why-monorepos)
|
||||
- [Dependency Management](/more-concepts/dependency-management)
|
||||
- [Code Sharing](/more-concepts/code-sharing)
|
||||
- [Using Nx at Enterprises](/more-concepts/monorepo-nx-enterprise)
|
||||
- [Nx Daemon](/more-concepts/nx-daemon)
|
||||
- [Nx and the Angular CLI](/more-concepts/nx-and-angular)
|
||||
- [Folder Structure](/more-concepts/folder-structure)
|
||||
- [Nx Devkit and Angular Devkit](/more-concepts/nx-devkit-angular-devkit)
|
||||
- [Micro Frontend Architecture](/more-concepts/micro-frontend-architecture)
|
||||
- [Applications and Libraries](/more-concepts/applications-and-libraries)
|
||||
- [Creating Libraries](/more-concepts/creating-libraries)
|
||||
- [Library Types](/more-concepts/library-types)
|
||||
- [Grouping Libraries](/more-concepts/grouping-libraries)
|
||||
- [Buildable and Publishable Libraries](/more-concepts/buildable-and-publishable-libraries)
|
||||
- [How the Project Graph is Built](/more-concepts/how-project-graph-is-built)
|
||||
- [Nx and the Nx Wrapper](/more-concepts/nx-and-the-wrapper)
|
||||
- [Managing your Global Nx Installation](/more-concepts/global-nx)
|
||||
- [More Concepts](/concepts/more-concepts)
|
||||
- [Customizing Inputs](/concepts/more-concepts/customizing-inputs)
|
||||
- [Incremental Builds](/concepts/more-concepts/incremental-builds)
|
||||
- [Illustrated Distributed Task Execution](/concepts/more-concepts/illustrated-dte)
|
||||
- [Nx and Turborepo](/concepts/more-concepts/turbo-and-nx)
|
||||
- [Monorepos](/concepts/more-concepts/why-monorepos)
|
||||
- [Dependency Management](/concepts/more-concepts/dependency-management)
|
||||
- [Code Sharing](/concepts/more-concepts/code-sharing)
|
||||
- [Using Nx at Enterprises](/concepts/more-concepts/monorepo-nx-enterprise)
|
||||
- [Nx Daemon](/concepts/more-concepts/nx-daemon)
|
||||
- [Nx and the Angular CLI](/concepts/more-concepts/nx-and-angular)
|
||||
- [Folder Structure](/concepts/more-concepts/folder-structure)
|
||||
- [Nx Devkit and Angular Devkit](/concepts/more-concepts/nx-devkit-angular-devkit)
|
||||
- [Micro Frontend Architecture](/concepts/more-concepts/micro-frontend-architecture)
|
||||
- [Applications and Libraries](/concepts/more-concepts/applications-and-libraries)
|
||||
- [Creating Libraries](/concepts/more-concepts/creating-libraries)
|
||||
- [Library Types](/concepts/more-concepts/library-types)
|
||||
- [Grouping Libraries](/concepts/more-concepts/grouping-libraries)
|
||||
- [Buildable and Publishable Libraries](/concepts/more-concepts/buildable-and-publishable-libraries)
|
||||
- [How the Project Graph is Built](/concepts/more-concepts/how-project-graph-is-built)
|
||||
- [Nx and the Nx Wrapper](/concepts/more-concepts/nx-and-the-wrapper)
|
||||
- [Managing your Global Nx Installation](/concepts/more-concepts/global-nx)
|
||||
- [All Recipes »](/recipes)
|
||||
- [CI Setup](/recipes/ci/ci-setup)
|
||||
- [Adopting Nx](/recipes/adopting-nx)
|
||||
|
||||
@ -28,8 +28,8 @@ As such, if we follow a _80/20 approach_:
|
||||
|
||||
Note, these libraries don’t necessarily need to be built separately, but are rather consumed and built by the application itself directly. Hence, nothing changes from a pure deployment point of view.
|
||||
|
||||
That said, it is totally possible to create so-called _"[buildable libraries](/more-concepts/buildable-and-publishable-libraries#buildable-libraries)"_ for enabling incremental builds as
|
||||
well as _"[publishable libraries](/more-concepts/buildable-and-publishable-libraries#publishable-libraries)"_ for those scenarios where not only you want to
|
||||
That said, it is totally possible to create so-called _"[buildable libraries](/concepts/more-concepts/buildable-and-publishable-libraries#buildable-libraries)"_ for enabling incremental builds as
|
||||
well as _"[publishable libraries](/concepts/more-concepts/buildable-and-publishable-libraries#publishable-libraries)"_ for those scenarios where not only you want to
|
||||
use a specific library within the current Nx workspace, but also to publish it
|
||||
to some package repository (e.g. NPM).
|
||||
|
||||
@ -45,6 +45,6 @@ In fact when organizing libraries you should think about your business domains.
|
||||
|
||||
Most often teams are aligned with those domains and thus a similar organization of the libraries in the `libs/` folder might be most appropriate. Nx allows to nest libraries into sub-folders which makes it easy to reflect such structuring.
|
||||
|
||||
- [Learn more about when you need to create a new library or using an existing one](/more-concepts/creating-libraries)
|
||||
- [Learn more about the different types of libraries we think you should follow](/more-concepts/library-types)
|
||||
- [Learn more about how to group libraries between each other](/more-concepts/grouping-libraries)
|
||||
- [Learn more about when you need to create a new library or using an existing one](/concepts/more-concepts/creating-libraries)
|
||||
- [Learn more about the different types of libraries we think you should follow](/concepts/more-concepts/library-types)
|
||||
- [Learn more about how to group libraries between each other](/concepts/more-concepts/grouping-libraries)
|
||||
|
||||
@ -29,7 +29,7 @@ For more details on the mechanics, remember that Nx is an open source project, s
|
||||
|
||||
Buildable libraries are similar to "publishable libraries" described above. Their scope however is not to distribute or publish them to some external registry. Thus they might not be optimized for bundling and distribution.
|
||||
|
||||
Buildable libraries are mostly used for producing some pre-compiled output that can be directly referenced from an Nx workspace application without the need to again compile it. A typical scenario is to leverage Nx’s [incremental building](/more-concepts/incremental-builds) capabilities.
|
||||
Buildable libraries are mostly used for producing some pre-compiled output that can be directly referenced from an Nx workspace application without the need to again compile it. A typical scenario is to leverage Nx’s [incremental building](/concepts/more-concepts/incremental-builds) capabilities.
|
||||
|
||||
{% callout type="warning" title="More details" %}
|
||||
In order for a buildable library to be pre-compiled, it can only depend on other buildable libraries. This allows you to take full advantage of incremental builds.
|
||||
|
||||
@ -17,7 +17,7 @@ export function categorizeRelatedDocuments(
|
||||
{
|
||||
id: 'concepts',
|
||||
name: 'Concepts',
|
||||
matchers: ['/concepts/', '/more-concepts/'],
|
||||
matchers: ['/concepts/', '/concepts/more-concepts/'],
|
||||
relatedDocuments: [],
|
||||
},
|
||||
{
|
||||
|
||||
@ -242,11 +242,11 @@ const diataxis = {
|
||||
'/generators/modifying-files': '/recipes/generators/modifying-files',
|
||||
'/structure/applications-and-libraries':
|
||||
'more-concepts/applications-and-libraries',
|
||||
'/structure/creating-libraries': '/more-concepts/creating-libraries',
|
||||
'/structure/library-types': '/more-concepts/library-types',
|
||||
'/structure/grouping-libraries': '/more-concepts/grouping-libraries',
|
||||
'/structure/creating-libraries': '/concepts/more-concepts/creating-libraries',
|
||||
'/structure/library-types': '/concepts/more-concepts/library-types',
|
||||
'/structure/grouping-libraries': '/concepts/more-concepts/grouping-libraries',
|
||||
'/structure/buildable-and-publishable-libraries':
|
||||
'/more-concepts/buildable-and-publishable-libraries',
|
||||
'/concepts/more-concepts/buildable-and-publishable-libraries',
|
||||
'/structure/monorepo-tags': '/core-features/enforce-project-boundaries',
|
||||
'/structure/dependency-graph': '/core-features/explore-graph',
|
||||
'/structure/project-graph-plugins':
|
||||
@ -259,19 +259,20 @@ const diataxis = {
|
||||
'/ci/monorepo-ci-bitbucket-pipelines':
|
||||
'/recipes/ci/monorepo-ci-bitbucket-pipelines',
|
||||
'/ci/distributed-builds': '/concepts/dte', // 👀
|
||||
'/ci/incremental-builds': '/more-concepts/incremental-builds',
|
||||
'/ci/incremental-builds': '/concepts/more-concepts/incremental-builds',
|
||||
'/ci/setup-incremental-builds-angular':
|
||||
'/recipes/other/setup-incremental-builds-angular',
|
||||
'/guides/turbo-and-nx': '/more-concepts/turbo-and-nx',
|
||||
'/guides/why-monorepos': '/more-concepts/why-monorepos',
|
||||
'/guides/turbo-and-nx': '/concepts/more-concepts/turbo-and-nx',
|
||||
'/guides/why-monorepos': '/concepts/more-concepts/why-monorepos',
|
||||
'/guides/adding-assets-react': '/recipes/other/adding-assets-react',
|
||||
'/guides/environment-variables': '/reference/environment-variables',
|
||||
'/guides/monorepo-nx-enterprise': '/more-concepts/monorepo-nx-enterprise',
|
||||
'/guides/monorepo-nx-enterprise':
|
||||
'/concepts/more-concepts/monorepo-nx-enterprise',
|
||||
'/guides/performance-profiling': '/recipes/other/performance-profiling',
|
||||
'/guides/eslint': '/recipes/other/eslint',
|
||||
'/guides/customize-webpack':
|
||||
'/packages/webpack/documents/webpack-config-setup',
|
||||
'/guides/nx-daemon': '/more-concepts/nx-daemon',
|
||||
'/guides/nx-daemon': '/concepts/more-concepts/nx-daemon',
|
||||
'/guides/js-and-ts': '/recipes/other/js-and-ts',
|
||||
'/guides/browser-support': '/recipes/other/browser-support',
|
||||
'/guides/react-native': '/recipes/other/react-native',
|
||||
@ -283,11 +284,12 @@ const diataxis = {
|
||||
'/recipes/other/using-tailwind-css-with-angular-projects',
|
||||
'/guides/misc-ngrx': '/recipes/other/misc-ngrx',
|
||||
'/guides/misc-data-persistence': '/recipes/other/misc-data-persistence',
|
||||
'/guides/nx-devkit-angular-devkit': '/more-concepts/nx-devkit-angular-devkit',
|
||||
'/guides/nx-devkit-angular-devkit':
|
||||
'/concepts/more-concepts/nx-devkit-angular-devkit',
|
||||
'/module-federation/faster-builds':
|
||||
'/recipes/module-federation/faster-builds',
|
||||
'/module-federation/micro-frontend-architecture':
|
||||
'/more-concepts/micro-frontend-architecture',
|
||||
'/concepts/more-concepts/micro-frontend-architecture',
|
||||
'/module-federation/dynamic-module-federation-with-angular':
|
||||
'/recipes/module-federation/dynamic-module-federation-with-angular',
|
||||
'/examples/nx-examples': '/recipes/other/nx-examples',
|
||||
@ -626,7 +628,7 @@ const packagesDocuments = {
|
||||
* Concept documents Updates (updated 2023-03-31)
|
||||
*/
|
||||
const conceptUrls = {
|
||||
'/more-concepts/global-nx':
|
||||
'/concepts/more-concepts/global-nx':
|
||||
'/getting-started/installation#installing-nx-globally',
|
||||
'/getting-started/package-based-repo-tutorial':
|
||||
'/getting-started/tutorials/package-based-repo-tutorial',
|
||||
@ -702,6 +704,11 @@ const movePluginFeaturesToCore = {
|
||||
'/core-features/plugin-features/use-code-generators',
|
||||
};
|
||||
|
||||
const makeMoreConceptsSubmenu = {
|
||||
'/more-concepts': '/concepts/more-concepts',
|
||||
'/more-concepts/:path*': '/concepts/more-concepts/:path*',
|
||||
};
|
||||
|
||||
/**
|
||||
* Public export API
|
||||
*/
|
||||
@ -723,4 +730,5 @@ module.exports = {
|
||||
referenceUrls,
|
||||
missingAndCatchAllRedirects,
|
||||
movePluginFeaturesToCore,
|
||||
makeMoreConceptsSubmenu,
|
||||
};
|
||||
|
||||
@ -32,7 +32,7 @@ The executor supports incrementally building your Angular application by buildin
|
||||
This can improve build time as the building of the workspace libraries can be cached, meaning they only have to be rebuilt if they have changed.
|
||||
|
||||
> Note: There may be some additional overhead in the linking of the built libraries' sources which may reduce the overall improvement in build time. Therefore this approach only benefits large applications and would likely have a negative impact on small and medium applications.
|
||||
> You can read more about when to use incremental builds [here](/more-concepts/incremental-builds#when-should-i-use-incremental-builds).
|
||||
> You can read more about when to use incremental builds [here](/concepts/more-concepts/incremental-builds#when-should-i-use-incremental-builds).
|
||||
|
||||
To allow your Angular application to take advantage of incremental building, change the `build` target in your `project.json` to match the following:
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user