@cdmbase/wiki-browser 12.0.18-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/lib/components/Logo.d.ts +4 -0
- package/lib/components/Logo.d.ts.map +1 -0
- package/lib/components/Logo.js +16 -0
- package/lib/components/Logo.js.map +1 -0
- package/lib/components/help/SidebarSearch.d.ts +8 -0
- package/lib/components/help/SidebarSearch.d.ts.map +1 -0
- package/lib/components/help/SidebarSearch.js +111 -0
- package/lib/components/help/SidebarSearch.js.map +1 -0
- package/lib/components/help/index.d.ts +2 -0
- package/lib/components/help/index.d.ts.map +1 -0
- package/lib/components/landing/FeatureCard.d.ts +13 -0
- package/lib/components/landing/FeatureCard.d.ts.map +1 -0
- package/lib/components/landing/FeatureCard.js +85 -0
- package/lib/components/landing/FeatureCard.js.map +1 -0
- package/lib/components/landing/QuickLinkCard.d.ts +8 -0
- package/lib/components/landing/QuickLinkCard.d.ts.map +1 -0
- package/lib/components/landing/QuickLinkCard.js +26 -0
- package/lib/components/landing/QuickLinkCard.js.map +1 -0
- package/lib/components/landing/SearchInput.d.ts +10 -0
- package/lib/components/landing/SearchInput.d.ts.map +1 -0
- package/lib/components/landing/SearchInput.js +223 -0
- package/lib/components/landing/SearchInput.js.map +1 -0
- package/lib/components/landing/index.d.ts +4 -0
- package/lib/components/landing/index.d.ts.map +1 -0
- package/lib/components/welcome.d.ts +3 -0
- package/lib/components/welcome.d.ts.map +1 -0
- package/lib/compute.d.ts +4 -0
- package/lib/compute.d.ts.map +1 -0
- package/lib/compute.js +96 -0
- package/lib/compute.js.map +1 -0
- package/lib/config/env-config.d.ts +4 -0
- package/lib/config/env-config.d.ts.map +1 -0
- package/lib/config/env-config.js +7 -0
- package/lib/config/env-config.js.map +1 -0
- package/lib/docs.config.d.ts +48 -0
- package/lib/docs.config.d.ts.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/lib/loaders/search.d.ts +1 -0
- package/lib/loaders/search.d.ts.map +1 -0
- package/lib/module.d.ts +4 -0
- package/lib/module.d.ts.map +1 -0
- package/lib/module.js +11 -0
- package/lib/module.js.map +1 -0
- package/lib/pages/ArticlePage/ArticlePage.d.ts +4 -0
- package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -0
- package/lib/pages/ArticlePage/ArticlePage.js +222 -0
- package/lib/pages/ArticlePage/ArticlePage.js.map +1 -0
- package/lib/pages/ArticlePage/index.d.ts +3 -0
- package/lib/pages/ArticlePage/index.d.ts.map +1 -0
- package/lib/pages/ArticlePage/index.js +3 -0
- package/lib/pages/ArticlePage/index.js.map +1 -0
- package/lib/pages/CategoryCollection/CategoryCollection.d.ts +4 -0
- package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -0
- package/lib/pages/CategoryCollection/CategoryCollection.js +103 -0
- package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -0
- package/lib/pages/CategoryCollection/index.d.ts +3 -0
- package/lib/pages/CategoryCollection/index.d.ts.map +1 -0
- package/lib/pages/CategoryCollection/index.js +3 -0
- package/lib/pages/CategoryCollection/index.js.map +1 -0
- package/lib/pages/Help/HelpIndex.d.ts +4 -0
- package/lib/pages/Help/HelpIndex.d.ts.map +1 -0
- package/lib/pages/Help/HelpIndex.js +44 -0
- package/lib/pages/Help/HelpIndex.js.map +1 -0
- package/lib/pages/Help/index.d.ts +4 -0
- package/lib/pages/Help/index.d.ts.map +1 -0
- package/lib/pages/Help/index.js +226 -0
- package/lib/pages/Help/index.js.map +1 -0
- package/lib/pages/Landing/index.d.ts +3 -0
- package/lib/pages/Landing/index.d.ts.map +1 -0
- package/lib/pages/Landing/index.js +281 -0
- package/lib/pages/Landing/index.js.map +1 -0
- package/lib/routes.json +2533 -0
- package/lib/seo.d.ts +22 -0
- package/lib/seo.d.ts.map +1 -0
- package/lib/slot-fill/FooterFill.d.ts +3 -0
- package/lib/slot-fill/FooterFill.d.ts.map +1 -0
- package/lib/slot-fill/FooterFill.js +18 -0
- package/lib/slot-fill/FooterFill.js.map +1 -0
- package/lib/slot-fill/LogoFill.d.ts +5 -0
- package/lib/slot-fill/LogoFill.d.ts.map +1 -0
- package/lib/slot-fill/LogoFill.js +74 -0
- package/lib/slot-fill/LogoFill.js.map +1 -0
- package/lib/slot-fill/consts.d.ts +5 -0
- package/lib/slot-fill/consts.d.ts.map +1 -0
- package/lib/slot-fill/consts.js +1 -0
- package/lib/slot-fill/consts.js.map +1 -0
- package/lib/slot-fill/index.d.ts +4 -0
- package/lib/slot-fill/index.d.ts.map +1 -0
- package/lib/templates/assets/images/add-link-frontend.png +0 -0
- package/lib/templates/assets/images/add-package-backend.png +0 -0
- package/lib/templates/assets/images/add-to-backend-module.png +0 -0
- package/lib/templates/assets/images/add-upload-client-frontend.png +0 -0
- package/lib/templates/assets/images/additional-parameters.png +0 -0
- package/lib/templates/assets/images/aeh-implementation.png +0 -0
- package/lib/templates/assets/images/aeh-usage.png +0 -0
- package/lib/templates/assets/images/apollo-client/recommendation_cache_mgmt.png +0 -0
- package/lib/templates/assets/images/app-deploy-new-version/jenkins1.PNG +0 -0
- package/lib/templates/assets/images/app-deploy-new-version/jenkins2.PNG +0 -0
- package/lib/templates/assets/images/auth-wrapper-code.png +0 -0
- package/lib/templates/assets/images/cdebase.png +0 -0
- package/lib/templates/assets/images/cdm-locales-directory.png +0 -0
- package/lib/templates/assets/images/client-settings.png +0 -0
- package/lib/templates/assets/images/codegen_file_update.png +0 -0
- package/lib/templates/assets/images/configuration.png +0 -0
- package/lib/templates/assets/images/copy-plugin.png +0 -0
- package/lib/templates/assets/images/docusaurus.png +0 -0
- package/lib/templates/assets/images/error-link.png +0 -0
- package/lib/templates/assets/images/error-sample.png +0 -0
- package/lib/templates/assets/images/extension copy.png +0 -0
- package/lib/templates/assets/images/extension.png +0 -0
- package/lib/templates/assets/images/graphql/graphql-folder-backend.png +0 -0
- package/lib/templates/assets/images/graphql/graphql-folder-with-gql.png +0 -0
- package/lib/templates/assets/images/i18n-config.png +0 -0
- package/lib/templates/assets/images/image.png +0 -0
- package/lib/templates/assets/images/logo.svg +10 -0
- package/lib/templates/assets/images/logo1.svg +1 -0
- package/lib/templates/assets/images/modify-upload-false-server.png +0 -0
- package/lib/templates/assets/images/navigation-auth-enabled.png +0 -0
- package/lib/templates/assets/images/org-dashboard-navigation.png +0 -0
- package/lib/templates/assets/images/org-navigation.png +0 -0
- package/lib/templates/assets/images/preferences_graphql_type.png +0 -0
- package/lib/templates/assets/images/provider.png +0 -0
- package/lib/templates/assets/images/route-config.png +0 -0
- package/lib/templates/assets/images/service-accounts.png +0 -0
- package/lib/templates/assets/images/source-code/source-code-environments.png +0 -0
- package/lib/templates/assets/images/source-code/source-code-organization.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/jenkins-changes.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/lerna-changes.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/root-package-json-changes.png +0 -0
- package/lib/templates/assets/images/spin-clone-develop-deployment/values-dev-changes.png +0 -0
- package/lib/templates/assets/images/sso-mappers.png +0 -0
- package/lib/templates/assets/images/sso-picture-mapper.png +0 -0
- package/lib/templates/assets/images/sso-settings.png +0 -0
- package/lib/templates/assets/images/timesheet_apollo_cache.png +0 -0
- package/lib/templates/assets/images/timesheet_query.png +0 -0
- package/lib/templates/assets/images/tutorial/docsVersionDropdown.png +0 -0
- package/lib/templates/assets/images/tutorial/localeDropdown.png +0 -0
- package/lib/templates/assets/images/unauthenticated.png +0 -0
- package/lib/templates/assets/images/undraw_docusaurus_mountain.svg +170 -0
- package/lib/templates/assets/images/undraw_docusaurus_react.svg +169 -0
- package/lib/templates/assets/images/undraw_docusaurus_tree.svg +1 -0
- package/lib/templates/assets/images/vite-plugin-config.png +0 -0
- package/lib/templates/content/docs/Generators/Project/generate-fullproject.md +12 -0
- package/lib/templates/content/docs/LLM/Logger.llm.md +194 -0
- package/lib/templates/content/docs/LLM/backend-proxies-services-llm.md +2687 -0
- package/lib/templates/content/docs/LLM/backend-service-llm.md +3384 -0
- package/lib/templates/content/docs/LLM/db_migration_llm.md +954 -0
- package/lib/templates/content/docs/LLM/frontend/REMIX-15.3-upgrade-llm.md +1245 -0
- package/lib/templates/content/docs/LLM/inngest/INNGEST_FUNCTION_DEVELOPMENT_GUIDE_LLM.md +1241 -0
- package/lib/templates/content/docs/LLM/inngest/INNGEST_NAMESPACE_LLM.md +384 -0
- package/lib/templates/content/docs/LLM/llm_workflow_namespace.md +384 -0
- package/lib/templates/content/docs/LLM/organization-components-form-llm.md +1395 -0
- package/lib/templates/content/docs/LLM/page-component-llm.md +173 -0
- package/lib/templates/content/docs/LLM/preferences-settings-llm.md +2781 -0
- package/lib/templates/content/docs/LLM/tailwind-css-llm.md +502 -0
- package/lib/templates/content/docs/UI/SchemaBasedUI.md +334 -0
- package/lib/templates/content/docs/UI/SlotFillComponent.md +334 -0
- package/lib/templates/content/docs/adminide-modules/account/auth0-login.md +31 -0
- package/lib/templates/content/docs/adminide-modules/account/index.md +14 -0
- package/lib/templates/content/docs/adminide-modules/account/keycloak-remix-setup.md +86 -0
- package/lib/templates/content/docs/adminide-modules/account/remix-auth-setup.md +79 -0
- package/lib/templates/content/docs/adminide-modules/account/various-auth-qatest.md +157 -0
- package/lib/templates/content/docs/adminide-modules/api-builders/graphql.md +906 -0
- package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +14 -0
- package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +14 -0
- package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/settingup-stripe-locally.md +25 -0
- package/lib/templates/content/docs/adminide-modules/billing/tier-config.md +293 -0
- package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +207 -0
- package/lib/templates/content/docs/adminide-modules/file-upload/index.md +16 -0
- package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +435 -0
- package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +161 -0
- package/lib/templates/content/docs/adminide-modules/preferences/AddAdditionalPermissions.md +151 -0
- package/lib/templates/content/docs/adminide-modules/preferences/Configuration.md +241 -0
- package/lib/templates/content/docs/adminide-modules/preferences/Policy-Configuration.md +61 -0
- package/lib/templates/content/docs/adminide-modules/preferences/UI-components/ResourceSettingsLoader.md +319 -0
- package/lib/templates/content/docs/adminide-modules/preferences/contribute_scope_target.md +280 -0
- package/lib/templates/content/docs/adminide-modules/preferences/generate-urii.md +94 -0
- package/lib/templates/content/docs/adminide-modules/preferences/index.md +28 -0
- package/lib/templates/content/docs/adminide-modules/preferences/machine-configuration.md +157 -0
- package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/generateCdecodeUri.md +1289 -0
- package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/migratingFromUseSettings.md +215 -0
- package/lib/templates/content/docs/adminide-modules/preferences/permissions/Roles-Permissions.md +72 -0
- package/lib/templates/content/docs/adminide-modules/preferences/permissions/settingUserPermissions.md +139 -0
- package/lib/templates/content/docs/adminide-modules/preferences/preference-dependency.md +138 -0
- package/lib/templates/content/docs/adminide-modules/preferences/route-based-configuration.md +41 -0
- package/lib/templates/content/docs/adminide-modules/preferences/schema-configuration.md +71 -0
- package/lib/templates/content/docs/adminide-modules/preferences/supported.md +24 -0
- package/lib/templates/content/docs/adminide-modules/preferences/useSettingsLoader.md +248 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/auth-providers.md +1317 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-guide.md +543 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-based-authentication.md +846 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-management.md +708 -0
- package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenants.md +1117 -0
- package/lib/templates/content/docs/chrome-extension/index.md +14 -0
- package/lib/templates/content/docs/chrome-extension/setup.md +30 -0
- package/lib/templates/content/docs/contributing/adding-package.md +23 -0
- package/lib/templates/content/docs/contributing/adding_new_modules.md +99 -0
- package/lib/templates/content/docs/contributing/architecture-updates.md +19 -0
- package/lib/templates/content/docs/contributing/avoid-using-promises-ui.md +116 -0
- package/lib/templates/content/docs/contributing/coding-guidelines.md +111 -0
- package/lib/templates/content/docs/contributing/do-and-dont.md +42 -0
- package/lib/templates/content/docs/contributing/faq.md +22 -0
- package/lib/templates/content/docs/contributing/folder-setup/browser.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/config.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/containers-server.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/core.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/graphql.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/index.md +30 -0
- package/lib/templates/content/docs/contributing/folder-setup/module.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/server.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/services.md +12 -0
- package/lib/templates/content/docs/contributing/folder-setup/store.md +12 -0
- package/lib/templates/content/docs/contributing/frontend-coding.md +30 -0
- package/lib/templates/content/docs/contributing/git-subtree-sharing.md +73 -0
- package/lib/templates/content/docs/contributing/graphql-subscriptions.md +69 -0
- package/lib/templates/content/docs/contributing/how-to-contribute.md +30 -0
- package/lib/templates/content/docs/contributing/how_to_check_pure_esm.md +29 -0
- package/lib/templates/content/docs/contributing/index.md +60 -0
- package/lib/templates/content/docs/contributing/installation-issues.md +23 -0
- package/lib/templates/content/docs/contributing/keyboard-shortcut.md +131 -0
- package/lib/templates/content/docs/contributing/language/locale-support.md +12 -0
- package/lib/templates/content/docs/contributing/lerna-build-tools.md +516 -0
- package/lib/templates/content/docs/contributing/lerna-yarn-workspaces.md +95 -0
- package/lib/templates/content/docs/contributing/lint-and-formatter.md +20 -0
- package/lib/templates/content/docs/contributing/mobile-setup.md +16 -0
- package/lib/templates/content/docs/contributing/project-setup.md +233 -0
- package/lib/templates/content/docs/contributing/react/index.md +14 -0
- package/lib/templates/content/docs/contributing/react/lazy-component.md +70 -0
- package/lib/templates/content/docs/contributing/run-various-options.md +124 -0
- package/lib/templates/content/docs/contributing/schema-first-graphql-types.md +37 -0
- package/lib/templates/content/docs/contributing/source-code-organization.md +57 -0
- package/lib/templates/content/docs/contributing/staging-docker.md +88 -0
- package/lib/templates/content/docs/contributing/third-party/apollo-client-v3-tutorials.md +28 -0
- package/lib/templates/content/docs/contributing/third-party/index.md +18 -0
- package/lib/templates/content/docs/contributing/typescript-contribution.md +16 -0
- package/lib/templates/content/docs/devops/app-deploy-new-version.md +30 -0
- package/lib/templates/content/docs/devops/index.md +14 -0
- package/lib/templates/content/docs/devops/mobile-jenkins-build.md +40 -0
- package/lib/templates/content/docs/devops/versioning-the-project.md +128 -0
- package/lib/templates/content/docs/error-handler/application-error-handler.md +40 -0
- package/lib/templates/content/docs/error-handler/error-handling.md +26 -0
- package/lib/templates/content/docs/error-handler/index.md +16 -0
- package/lib/templates/content/docs/error-handler/logging-errors.md +14 -0
- package/lib/templates/content/docs/feature-api/copy-operation.md +427 -0
- package/lib/templates/content/docs/feature-api/feature-browser/assets.md +46 -0
- package/lib/templates/content/docs/feature-api/feature-browser/auth-permissions.md +12 -0
- package/lib/templates/content/docs/feature-api/feature-browser/feature.md +131 -0
- package/lib/templates/content/docs/feature-api/feature-browser/index.md +22 -0
- package/lib/templates/content/docs/feature-api/feature-browser/routes-menu.md +110 -0
- package/lib/templates/content/docs/feature-api/feature-browser/routing-convention.md +124 -0
- package/lib/templates/content/docs/feature-api/feature-browser/routing.md +338 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/auth-permissions.md +20 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/feature.md +130 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/index.md +18 -0
- package/lib/templates/content/docs/feature-api/feature-mobile/navigation.md +187 -0
- package/lib/templates/content/docs/feature-api/feature-server/Scheduling.md +44 -0
- package/lib/templates/content/docs/feature-api/feature-server/dataloader.md +320 -0
- package/lib/templates/content/docs/feature-api/feature-server/dependency-injection.md +81 -0
- package/lib/templates/content/docs/feature-api/feature-server/feature.md +65 -0
- package/lib/templates/content/docs/feature-api/feature-server/generic-dataloader.md +135 -0
- package/lib/templates/content/docs/feature-api/feature-server/index.md +40 -0
- package/lib/templates/content/docs/feature-api/feature-server/migration.md +127 -0
- package/lib/templates/content/docs/feature-api/feature-server/mongo-model.md +72 -0
- package/lib/templates/content/docs/feature-api/feature-server/permissions.md +12 -0
- package/lib/templates/content/docs/feature-api/feature-server/policies.md +57 -0
- package/lib/templates/content/docs/feature-api/feature-server/preferences.md +57 -0
- package/lib/templates/content/docs/feature-api/feature-server/repositories.md +114 -0
- package/lib/templates/content/docs/feature-api/feature-server/resolvers.md +126 -0
- package/lib/templates/content/docs/feature-api/feature-server/rules.md +132 -0
- package/lib/templates/content/docs/feature-api/feature-server/schema.md +12 -0
- package/lib/templates/content/docs/feature-api/feature-server/services.md +102 -0
- package/lib/templates/content/docs/feature-api/feature-server/setup-resource-crud.md +359 -0
- package/lib/templates/content/docs/feature-api/index.md +18 -0
- package/lib/templates/content/docs/graphql/apolloClient-mutation.md +94 -0
- package/lib/templates/content/docs/graphql/index.md +14 -0
- package/lib/templates/content/docs/graphql/scalars.md +15 -0
- package/lib/templates/content/docs/help/index.md +14 -0
- package/lib/templates/content/docs/help/intro.md +16 -0
- package/lib/templates/content/docs/intl/ant-design-menu-translation.md +74 -0
- package/lib/templates/content/docs/intl/intl-namespace.md +129 -0
- package/lib/templates/content/docs/intl/vite-plugin-intl.md +87 -0
- package/lib/templates/content/docs/intl/webpack-plugin-intl.md +12 -0
- package/lib/templates/content/docs/intro.md +18 -0
- package/lib/templates/content/docs/knowledge/basic-fullstack.md +238 -0
- package/lib/templates/content/docs/mailing/index.md +14 -0
- package/lib/templates/content/docs/mailing/mailing-template.md +148 -0
- package/lib/templates/content/docs/mobile/App-navigation-generator.md +410 -0
- package/lib/templates/content/docs/mobile/MobileTestCases.md +264 -0
- package/lib/templates/content/docs/mobile/eas-profile-build.md +107 -0
- package/lib/templates/content/docs/mobile/expo-push-notification-setup.md +216 -0
- package/lib/templates/content/docs/mobile/index.md +14 -0
- package/lib/templates/content/docs/mobile/routes.md +83 -0
- package/lib/templates/content/docs/organization/adding-account-context.md +116 -0
- package/lib/templates/content/docs/organization/adding-org-mobile-navigation.md +22 -0
- package/lib/templates/content/docs/organization/adding-org-web-navigation.md +12 -0
- package/lib/templates/content/docs/organization/index.md +20 -0
- package/lib/templates/content/docs/organization/initialization.md +20 -0
- package/lib/templates/content/docs/organization/organization-resource-vs-resource.md +112 -0
- package/lib/templates/content/docs/remix/configuration/component-structure-best-practices.md +152 -0
- package/lib/templates/content/docs/remix/configuration/configurations.md +218 -0
- package/lib/templates/content/docs/remix/configuration/css-import-and-stylesheets.md +142 -0
- package/lib/templates/content/docs/remix/configuration/dont-subcomponent-network.md +166 -0
- package/lib/templates/content/docs/remix/configuration/generated-data-loaders.md +122 -0
- package/lib/templates/content/docs/remix/configuration/generated-resource-loaders.md +257 -0
- package/lib/templates/content/docs/remix/configuration/query-params-generator.md +216 -0
- package/lib/templates/content/docs/remix/configuration/routes-extra-icons.md +103 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-advanced.md +86 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-auth.md +113 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-best-practices.md +55 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-fields.md +79 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-graphql.md +79 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-index.md +112 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-loaders.md +165 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-middleware.md +196 -0
- package/lib/templates/content/docs/remix/configuration/routes-json-overview.md +53 -0
- package/lib/templates/content/docs/remix/data-loaders.md +43 -0
- package/lib/templates/content/docs/remix/devtools/remix-devtools.md +58 -0
- package/lib/templates/content/docs/remix/examples/changes-using-servercode.md +79 -0
- package/lib/templates/content/docs/remix/extra-icons.md +62 -0
- package/lib/templates/content/docs/remix/extra-links.md +65 -0
- package/lib/templates/content/docs/remix/generated-data-loaders.md +114 -0
- package/lib/templates/content/docs/remix/queryParamsGenerator.md +89 -0
- package/lib/templates/content/docs/remix/resources.md +16 -0
- package/lib/templates/content/docs/remix/styles.md +132 -0
- package/lib/templates/content/docs/remix/wiki.md +12 -0
- package/lib/templates/content/docs/security/auth-wrapper/auth-wrapper.md +24 -0
- package/lib/templates/content/docs/security/index.md +18 -0
- package/lib/templates/content/docs/security/secure-button-mobilenative.md +88 -0
- package/lib/templates/content/docs/security/secure-button-web.md +89 -0
- package/lib/templates/content/docs/server-side/account-customization.md +82 -0
- package/lib/templates/content/docs/server-side/apollo/caching.md +164 -0
- package/lib/templates/content/docs/server-side/backend-architecture/FINAL-DECISION.md +209 -0
- package/lib/templates/content/docs/server-side/backend-architecture/TRUE-FINAL-ARCHITECTURE.md +603 -0
- package/lib/templates/content/docs/server-side/backend-architecture/index1.md +0 -0
- package/lib/templates/content/docs/server-side/backend-coding.md +839 -0
- package/lib/templates/content/docs/server-side/e2b/manageing-template.md +197 -0
- package/lib/templates/content/docs/server-side/index.md +14 -0
- package/lib/templates/content/docs/server-side/inngest-functions-module.md +309 -0
- package/lib/templates/content/docs/server-side/listen-stripe-events.md +43 -0
- package/lib/templates/content/docs/server-side/slug-service.md +323 -0
- package/lib/templates/content/docs/tests/index.md +18 -0
- package/lib/templates/content/docs/tests/jest-test-debug-vscode.md +40 -0
- package/lib/templates/content/docs/tests/known-errors.md +116 -0
- package/lib/templates/content/docs/tests/service-test-template.md +118 -0
- package/lib/templates/content/docs/tests/test-setup.md +93 -0
- package/lib/templates/content/docs/xstate.md +23 -0
- package/lib/types.d.ts +37 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/utils/docsNavigation.d.ts +9 -0
- package/lib/utils/docsNavigation.d.ts.map +1 -0
- package/lib/utils/docsNavigation.js +37 -0
- package/lib/utils/docsNavigation.js.map +1 -0
- package/lib/utils/helpCenterUtils.d.ts +26 -0
- package/lib/utils/helpCenterUtils.d.ts.map +1 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +3 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/markdownLoader.d.ts +36 -0
- package/lib/utils/markdownLoader.d.ts.map +1 -0
- package/lib/utils/markdownLoader.js +2242 -0
- package/lib/utils/markdownLoader.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Build Tools
|
|
4
|
+
description: Build Tools
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Build Tools...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# What is lerna?
|
|
13
|
+
|
|
14
|
+
[Lerna](https://github.com/lerna/lerna) allows us to manage multiple packages inside the same repository instead of creating one repository per package. With Lerna, we can unify processes like linting, building, testing, and releasing, have a single place to report issues, and becomes easier to set up our development environment.
|
|
15
|
+
|
|
16
|
+
# Things to know about current package structure
|
|
17
|
+
|
|
18
|
+
- We run `lerna` commands by wrapped into `npm/yarn` commands.
|
|
19
|
+
- You will notice there are following commands which run's lerna comamnds.
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
...
|
|
24
|
+
"lerna:prepublish": "git checkout publish && git merge -s recursive -X theirs master",
|
|
25
|
+
"lerna:prepublish:develop": "git checkout publish-develop && git merge -s recursive -X theirs develop",
|
|
26
|
+
"watch": "lerna exec --no-sort --ignore *server --stream --parallel -- webpack --watch",
|
|
27
|
+
"publish": "yarn lerna:prepublish && lerna publish",
|
|
28
|
+
"lerna": "lerna bootstrap --hoist",
|
|
29
|
+
"postinstall": "yarn lerna",
|
|
30
|
+
"clean": "lerna clean",
|
|
31
|
+
"build": "yarn build:packages",
|
|
32
|
+
"build:packages": "lerna run build --ignore *server",
|
|
33
|
+
"build:packages:watch": "lerna run build:lib:watch --ignore *server --stream",
|
|
34
|
+
"watch-packages": "lerna exec --no-sort --scope @admin-layout/chakra-design-pro --scope @admin-layout/client --stream --parallel 'webpack --watch'",
|
|
35
|
+
...
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
# Details on each command that wrapped for lerna
|
|
40
|
+
|
|
41
|
+
- `yarn install` - This command need to be run in the root of the package only to install all the dependencies. We have post step(`postinstall`) to run `yarn lerna` after install finishes so `lerna` will installs all of packages (seen under packages directory) dependencies and links any cross-dependencies.
|
|
42
|
+
Note: We do not need to run `yarn` under any packages with `package.json` files seen under `packages` and `servers` directories.
|
|
43
|
+
- `yarn lerna` - This triggers `lerna bootstrap --hoist`. Normally this get triggered as post install step. You can run this command to install any packages' dependencies. More information about this command can be found [here](https://github.com/lerna/lerna/blob/master/doc/hoist.md). The bottom line, the `hoist` will try to install all common dependencies to the top-level node_modules, and omitted from individual package's `node_modules`.
|
|
44
|
+
The outlier packages with different versions will get a normal, local node_modules installation of the necessary dependencies.
|
|
45
|
+
- `yarn clean` - Removes the `node_modules` directory from all packages.
|
|
46
|
+
- `yarn clean:force` - Removes the `node_modules` directory from all packages as well as `package-lock.json` file.
|
|
47
|
+
- `yarn build` - It invokes `yarn build` in each packages parallely.
|
|
48
|
+
- `yarn watch` - Automatically builds the packages that are changed. Recommended to run this when actively coding, so you would know anything (compilation errors) breaks instantly. You may also see `Error: ENOSPC: System limit for number of file watchers reached` if you OS is not configured with high open files. Check [Not Enough Watchers](#not-enough-watchers) section for futher information.
|
|
49
|
+
- `yarn watch-packages` - Abutomatically builds the dependent packages mostly under `packages` folder.
|
|
50
|
+
- `yarn watch-packages -- --scope @sample-stack/counter-module-*` - By adding package module you like to watch along with the dependent packages. If you have more packages to watch keep adding with `-- --scope packageA* --scope packageB`
|
|
51
|
+
|
|
52
|
+
## List packages
|
|
53
|
+
|
|
54
|
+
Using the following folder structure, versions, and privacy as an example:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
fullstack-pro/
|
|
58
|
+
├── packages
|
|
59
|
+
│ ├── sample-core # 1.1.1 - public
|
|
60
|
+
│ ├── sample-platform
|
|
61
|
+
│ │ ├── browser # 1.1.1 - public
|
|
62
|
+
│ │ └── server # 1.1.1 - public
|
|
63
|
+
│ ...
|
|
64
|
+
├── packages-modules
|
|
65
|
+
│ └── counter
|
|
66
|
+
│ │ ├── browser
|
|
67
|
+
│ │ └── server
|
|
68
|
+
├── servers
|
|
69
|
+
│ ├── backend-server # 1.0.0 - private
|
|
70
|
+
│ ├── frontend-server # 1.0.0 - private
|
|
71
|
+
│ ...
|
|
72
|
+
|── package.json
|
|
73
|
+
└── lerna.json # 1.1.1
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
List all public packages
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
lerna ls
|
|
80
|
+
|
|
81
|
+
# result
|
|
82
|
+
@sample-stack/counter-module-browser
|
|
83
|
+
@sample-stack/counter-module-server
|
|
84
|
+
@sample-stack/core
|
|
85
|
+
@sample-stack/platform-browser
|
|
86
|
+
@sample-stack/platform-server
|
|
87
|
+
@sample-stack/store
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
List all packages (public and private)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
lerna ls --all
|
|
94
|
+
|
|
95
|
+
# result
|
|
96
|
+
@sample-stack/counter-module-browser
|
|
97
|
+
@sample-stack/counter-module-server
|
|
98
|
+
@sample-stack/core
|
|
99
|
+
@sample-stack/platform-browser
|
|
100
|
+
@sample-stack/platform-server
|
|
101
|
+
@sample-stack/store
|
|
102
|
+
sample-stack-desktop (PRIVATE)
|
|
103
|
+
sample-stack-mobile (PRIVATE)
|
|
104
|
+
sample-stack-backend-server (PRIVATE)
|
|
105
|
+
sample-stack-frontend-server (PRIVATE)
|
|
106
|
+
sample-stack-moleculer-server (PRIVATE)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
List all public packages with more details
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
lerna ll
|
|
113
|
+
# or
|
|
114
|
+
lerna ls -l
|
|
115
|
+
|
|
116
|
+
# result
|
|
117
|
+
@sample-stack/counter-module-browser v0.0.1 packages-modules/counter/browser
|
|
118
|
+
@sample-stack/counter-module-server v0.0.1 packages-modules/counter/server
|
|
119
|
+
@sample-stack/core v0.0.1 packages/sample-core
|
|
120
|
+
@sample-stack/platform-browser v0.0.1 packages/sample-platform/browser
|
|
121
|
+
@sample-stack/platform-server v0.0.1 packages/sample-platform/server
|
|
122
|
+
@sample-stack/store v0.0.1 packages/sample-store
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
List all public and private packages with details
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
lerna la
|
|
129
|
+
# or
|
|
130
|
+
lerna ls -la
|
|
131
|
+
|
|
132
|
+
# result
|
|
133
|
+
@sample-stack/counter-module-browser v0.0.1 packages-modules/counter/browser
|
|
134
|
+
@sample-stack/counter-module-server v0.0.1 packages-modules/counter/server
|
|
135
|
+
@sample-stack/core v0.0.1 packages/sample-core
|
|
136
|
+
@sample-stack/platform-browser v0.0.1 packages/sample-platform/browser
|
|
137
|
+
@sample-stack/platform-server v0.0.1 packages/sample-platform/server
|
|
138
|
+
@sample-stack/store v0.0.1 packages/sample-store
|
|
139
|
+
sample-stack-desktop v0.0.1 portable-devices/desktop (PRIVATE)
|
|
140
|
+
sample-stack-mobile v0.0.1 portable-devices/mobile (PRIVATE)
|
|
141
|
+
sample-stack-backend-server v0.0.1 servers/backend-server (PRIVATE)
|
|
142
|
+
sample-stack-frontend-server v0.0.1 servers/frontend-server (PRIVATE)
|
|
143
|
+
sample-stack-moleculer-server v0.0.1 servers/moleculer-server (PRIVATE)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Adding packages as dependencies to sibling packages
|
|
147
|
+
|
|
148
|
+
When a package is depend on sibiling packages, make sure to add its `package.json` file with `link`
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
"dependencies": {
|
|
152
|
+
...
|
|
153
|
+
"@common-stack/client-core": "link:../../packages/common-client-core",
|
|
154
|
+
},
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Dependencies
|
|
158
|
+
|
|
159
|
+
The dependencies of our projects are registered inside the **package.json** file. This file is usually in the project's root folder, but it is also inside each package in the Lerna projects. **Each package has its dependencies.**
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
fullstack-pro/
|
|
163
|
+
├── packages
|
|
164
|
+
│ ├── sample-core
|
|
165
|
+
│ │ ├── package.json
|
|
166
|
+
│ │ └── ...
|
|
167
|
+
│ ├── sample-platform
|
|
168
|
+
│ │ ├── browser
|
|
169
|
+
│ │ │ ├── package.json
|
|
170
|
+
│ │ │ └── ...
|
|
171
|
+
│ │ └── server
|
|
172
|
+
│ │ │ ├── package.json
|
|
173
|
+
│ │ │ └── ...
|
|
174
|
+
│ ...
|
|
175
|
+
├── packages-modules
|
|
176
|
+
│ └── counter
|
|
177
|
+
│ │ ├── browser
|
|
178
|
+
│ │ │ ├── package.json
|
|
179
|
+
│ │ │ └── ...
|
|
180
|
+
│ │ └── server
|
|
181
|
+
│ │ │ ├── package.json
|
|
182
|
+
│ │ │ └── ...
|
|
183
|
+
├── servers
|
|
184
|
+
│ ├── backend-server
|
|
185
|
+
│ │ ├── package.json
|
|
186
|
+
│ │ └── ...
|
|
187
|
+
│ ├── frontend-server
|
|
188
|
+
│ │ ├── package.json
|
|
189
|
+
│ │ └── ...
|
|
190
|
+
│ ...
|
|
191
|
+
|── package.json
|
|
192
|
+
└── lerna.json
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
To add dependencies to the packages, Lerna provides us the command `lerna add`. Note that only a single package can be added at a time compared to `yarn add` or `yarn install`.
|
|
196
|
+
|
|
197
|
+
### Add dependencies
|
|
198
|
+
|
|
199
|
+
The **dependencies** key must contain all the dependencies our project/application/package/library needs to work in production. **We know when we must declare it as a dependency when its absence has side effects on your production build.**
|
|
200
|
+
|
|
201
|
+
**Adding dependencies**
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# add a dependency to one package
|
|
205
|
+
lerna add lodash --scope=@sample-stack/counter-module-browser
|
|
206
|
+
|
|
207
|
+
# add a dependency to several packages
|
|
208
|
+
lerna add lodash packages-modules/counter-*
|
|
209
|
+
|
|
210
|
+
# add a dependency to all packages
|
|
211
|
+
lerna add lodash
|
|
212
|
+
|
|
213
|
+
# add a dependency on the root package.json
|
|
214
|
+
lerna add lodash -w
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Add devDependencies
|
|
218
|
+
|
|
219
|
+
The **devDependencies** key must contain all the **dependencies we use during development or needed during the build of our production bundle**. To add a dependency as devDependency just add the flag `--dev`.
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# add a devDependency to one package
|
|
223
|
+
lerna add lodash --scope=@sample-stack/counter-module-browser --dev
|
|
224
|
+
|
|
225
|
+
# add a devDependency to several packages
|
|
226
|
+
lerna add lodash packages-modules/counter-* --dev
|
|
227
|
+
|
|
228
|
+
# add a devDependency to all packages
|
|
229
|
+
lerna add lodash --dev
|
|
230
|
+
|
|
231
|
+
# add a devDependency on the root package.json
|
|
232
|
+
lerna add lodash -w --dev
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Add peerDependencies
|
|
236
|
+
|
|
237
|
+
The **peerDependencies** key is **used when our package has a dependency that can also be a dependency of the project using it**. If our package has a dependency that can also be used by its dependent, we can specify the version required by us and the dependent will receive a warning when not matching that requirement.
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# add a peerDependency to one package
|
|
241
|
+
lerna add lodash --scope=@sample-stack/counter-module-browser --peer
|
|
242
|
+
|
|
243
|
+
# add a peerDependency to several packages
|
|
244
|
+
lerna add lodash packages-modules/counter-* --peer
|
|
245
|
+
|
|
246
|
+
# add a peerDependency to all packages
|
|
247
|
+
lerna add lodash --peer
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Updating dependencies
|
|
251
|
+
|
|
252
|
+
Well, that is a problem. Lerna has no direct command to upgrade dependencies, which is ok when we want to update a dependency in the root package.json. We can use yarn as usually:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# update a dependency on the root package.json
|
|
256
|
+
yarn upgrade lodash
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
However, when we want to upgrade a dependency inside a package, nothing seems to work. Using `lerna exec` as we use it to remove dependencies does not work.
|
|
260
|
+
|
|
261
|
+
For now, what we do is manually update the dependencies version in the `package.json` file of each package and then run `yarn install`.
|
|
262
|
+
|
|
263
|
+
### Updating all sub packages of a **scoped** packages to newest release
|
|
264
|
+
|
|
265
|
+
lerna exec "ncu -u --newest --timeout 60000 -f /@sample-stack\*/"
|
|
266
|
+
|
|
267
|
+
**\*note** after updating packages you need to run `yarn` to install them.
|
|
268
|
+
|
|
269
|
+
### Removing dependencies
|
|
270
|
+
|
|
271
|
+
Lerna also has no direct way to allow us to remove dependencies from the project or packages but we can use the `lerna exec` and `yarn remove` commands to go around it.
|
|
272
|
+
|
|
273
|
+
`lerna exec` allow us to run a specific command within a particular package, several packages (using a glob expression), or in all of them. Using it with `yarn remove` we can remove dependencies from the packages. Using `yarn remove` alone we can also remove dependencies from the root package.json.
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# remove a dependency to one package
|
|
277
|
+
lerna exec --scope @sample-stack/counter-module-browser -- yarn remove lodash
|
|
278
|
+
|
|
279
|
+
# remove a dependency to several packages
|
|
280
|
+
lerna exec --scope @sample-stack/counter-* -- yarn remove lodash
|
|
281
|
+
|
|
282
|
+
# remove a dependency to all packages
|
|
283
|
+
lerna exec -- yarn remove lodash
|
|
284
|
+
|
|
285
|
+
# remove a dependency from the root package.json
|
|
286
|
+
yarn remove lodash
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### List modified packages
|
|
290
|
+
|
|
291
|
+
Like the `git status` command that shows us the files that we modified, Lerna provides us the command `lerna changed` that shows us the packages (not the files) that we modified compared to the remote repository.
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
lerna changed
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Diffing
|
|
298
|
+
|
|
299
|
+
**All modifications**
|
|
300
|
+
|
|
301
|
+
Like the `git diff` command but ignoring the files outside the packages, Lerna provides us the command `lerna diff` that shows us all the code modifications we did. We can also provide a package name to see only the modifications to that package.
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# all modifications
|
|
305
|
+
lerna diff
|
|
306
|
+
|
|
307
|
+
# modifications in a specific package
|
|
308
|
+
lerna diff @sample-stack/counter-module-browser
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Publish
|
|
312
|
+
|
|
313
|
+
To publish our packages using Lerna we use the command `lerna publish` but, first, let's configure Lerna only to allow us to create newer versions of our packages from our main branch (eg. master).
|
|
314
|
+
|
|
315
|
+
```json[lerna.json]
|
|
316
|
+
{
|
|
317
|
+
"version": "0.0.0",
|
|
318
|
+
"command": {
|
|
319
|
+
"version": {
|
|
320
|
+
"allowBranch": "master"
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Now, if we try to run `lerna publish` inside another branch, it will fail. As highlighted in the [Lerna documentation](https://github.com/lerna/lerna/tree/main/commands/version#--allow-branch-glob), this is a best practice that can save us some problems.
|
|
327
|
+
|
|
328
|
+
To publish a **scoped package** we also need to set the `publishConfig.access` to `true` in its **package.json**:
|
|
329
|
+
|
|
330
|
+
```json[packages/sample-core/package.json]
|
|
331
|
+
{
|
|
332
|
+
"name": "@sample-stack/core",
|
|
333
|
+
"version": "0.0.0",
|
|
334
|
+
"publishConfig": {
|
|
335
|
+
"access": "public"
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Setting this configuration in a package without a scope fails to publish.
|
|
341
|
+
|
|
342
|
+
Imagine that we started developing the **sample-core** package, and although we merged some initial versions, we didn't finish yet, and **we don't want to release it to npm yet**. We can add to its **package.json** the **private** key with the value `true`, and Lerna will ignore it.
|
|
343
|
+
|
|
344
|
+
```json[packages/sample-core/package.json]
|
|
345
|
+
{
|
|
346
|
+
"name": "app-button",
|
|
347
|
+
"version": "0.0.0",
|
|
348
|
+
"private": true
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### npm
|
|
353
|
+
|
|
354
|
+
To publish to npm, first, we need to have an npm account.
|
|
355
|
+
|
|
356
|
+
We can see if we are logged in running:
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
npm whoami
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
In case we are not, we do it running:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
npm login
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Once we are logged in we can run:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
lerna publish
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Which prompts possible versions to update each package. It's up to us to select the right ones based on what we have done. Check the [Semantic Versioning Specification](https://semver.org/) for more information about versioning.
|
|
375
|
+
|
|
376
|
+
### Github Package Registry
|
|
377
|
+
|
|
378
|
+
To publish in the Github Packages Registry, we need some extra configurations.
|
|
379
|
+
|
|
380
|
+
First, in the **package.json** of each package, we must specify the repository where our code lives.
|
|
381
|
+
|
|
382
|
+
```json[package.json]
|
|
383
|
+
{
|
|
384
|
+
...
|
|
385
|
+
"repository" : {
|
|
386
|
+
"type" : "git",
|
|
387
|
+
"url": "ssh://git@github.com:cdmbase/fullstack-pro.git"
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Then, in the **lerna.json** file, we must specify the registry to publish the packages. By default, it is the npm registry. We have to change it to the `https://npm.pkg.github.com`.
|
|
393
|
+
|
|
394
|
+
```json[lerna.json]
|
|
395
|
+
{
|
|
396
|
+
"packages": [
|
|
397
|
+
"packages/*"
|
|
398
|
+
],
|
|
399
|
+
"version": "0.0.0",
|
|
400
|
+
"command": {
|
|
401
|
+
"version": {
|
|
402
|
+
"allowBranch": "master"
|
|
403
|
+
},
|
|
404
|
+
"publish": {
|
|
405
|
+
"registry": "https://npm.pkg.github.com"
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
We also have to create a personal token on GitHub with the permissions to read and write packages (`read:packages` and `write:packages`).
|
|
412
|
+
|
|
413
|
+
Using the generated token as a password, we authenticate on GitHub Package Registry:
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
$ npm login --registry=https://npm.pkg.github.com
|
|
417
|
+
> Username: USERNAME
|
|
418
|
+
> Password: TOKEN
|
|
419
|
+
> Email: PUBLIC EMAIL ADDRESS
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
And we are ready to publish packages:
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
lerna publish
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
## Conventional Commits
|
|
429
|
+
|
|
430
|
+
Lerna allows us to use the [Conventional Commits Specification](https://www.conventionalcommits.org/) to determine the bump version and generate the CHANGELOG.md files automatically.
|
|
431
|
+
|
|
432
|
+
Follow the specification, when we are creating a new release, Lerna checks all the commits since the last release and it increments:
|
|
433
|
+
|
|
434
|
+
- the PATCH number when the subject of the commit is prefixed with `fix:`;
|
|
435
|
+
- the MINOR number when the subject of the commit is prefixed with `feat:`. It has precedence over the PATCH;
|
|
436
|
+
- the MAJOR number when in the body of some commit it finds a string `BREAKING CHANGE:`. It can have any type provided in the subject and it has precedence over PATCH and MINOR.
|
|
437
|
+
|
|
438
|
+
Considering that we are using fixed versions and our project is in the version `1.0.0`. If we try to create a new release with the following commit, our project version is updated to `1.0.1`.
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
# commit 1
|
|
442
|
+
subject -> "fix: fix button font size"
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Then, if we do two more commits and publish again, the version is updated to `1.1.0`.
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
# commit 1
|
|
449
|
+
subject -> "fix: fix button border-radius"
|
|
450
|
+
# commit 2
|
|
451
|
+
subject -> "feat: added loading status to the button"
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
Finally, if we do three more commits, the version is updated to `2.0.0`.
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
# commit 1
|
|
458
|
+
subject -> "fix: fix button text color"
|
|
459
|
+
# commit 2
|
|
460
|
+
subject -> "feat: added outlined style"
|
|
461
|
+
# commit 3
|
|
462
|
+
subject -> "feat: changed the loading property to isLoading"
|
|
463
|
+
body: "BREAKING CHANGE: loading prop must be updated to isLoading"
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### Configuration
|
|
467
|
+
|
|
468
|
+
To do that, we update our `lerna.json` file:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
{
|
|
472
|
+
...
|
|
473
|
+
"command": {
|
|
474
|
+
"publish": {
|
|
475
|
+
"conventionalCommits": true,
|
|
476
|
+
"yes": true
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
Now, when we run `lerna publish` instead of asking us what version we want to give to each package, it automatically determines and publishes those versions.
|
|
483
|
+
|
|
484
|
+
## Not Enough Watchers
|
|
485
|
+
|
|
486
|
+
Based on the project, we may have multiple `packages` and `packages-modules` to watch for file changes in order to automatically apply the changes in the browser.
|
|
487
|
+
When we have more modules to watch, we need laptop resource to support it. If the laptop OS is configured with default `open files`, we need to increase it.
|
|
488
|
+
Follow notes from webpack to change OS configuration to increase file watchers https://webpack.js.org/configuration/watch/#not-enough-watchers
|
|
489
|
+
|
|
490
|
+
But, in case, if you are working in only one or two modules and need to watch them only then you can run below command on each packages,
|
|
491
|
+
respectively.
|
|
492
|
+
|
|
493
|
+
`lerna exec --scope=<package name> yarn watch`
|
|
494
|
+
|
|
495
|
+
example: run them in different command tabs for all (package1, package2, pacakge3) packages to watch.
|
|
496
|
+
|
|
497
|
+
```
|
|
498
|
+
lerna exec --scope=@sample-stack/counter-module-browser yarn watch
|
|
499
|
+
lerna exec --scope=@sample-stack/counter-module-server yarn watch
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
## Packages vs Scoped Packages
|
|
503
|
+
|
|
504
|
+
All npm packages have a name. Some also have a scope. Scopes are a way of grouping related packages together.
|
|
505
|
+
|
|
506
|
+
When we sign up for an npm user account or create an organization, we can use a scope that matches our user or organization name. The same happens for Github Packages Registry. In both registries, my username is **sample-stack**, so my scope is also **sample-stack**.
|
|
507
|
+
|
|
508
|
+
Using packages without a scope, we can easily have naming conflicts with other person packages. For example, we can not create a package named jquery on npm because it already exists.
|
|
509
|
+
|
|
510
|
+
When we use scoped packages, naming is not a problem because we are naming packages inside our scope.
|
|
511
|
+
|
|
512
|
+
If I were creating a new scoped package called **core**, its name in the **package.json** file would be **@sample-stack/core**.
|
|
513
|
+
|
|
514
|
+
## Advance lerna tutorial
|
|
515
|
+
|
|
516
|
+
https://www.youtube.com/watch?v=WD5T-VMCTvY
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Lerna Yarn Workspaces
|
|
4
|
+
description: Lerna Yarn Workspaces
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Lerna Yarn Workspaces...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Lerna Yarn Workspaces
|
|
13
|
+
|
|
14
|
+
## Introduction
|
|
15
|
+
|
|
16
|
+
[Yarn Workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) allow us to run `yarn install` only once, although we have several packages. Yarn uses a single lock file rather than a different one for each project, which means fewer conflicts. Once all the dependencies are installed together, Yarn can better optimize them. Its most important feature is that when we have one package depending on another package of our repository, yarn link them together, allowing us to use always the most up-to-date code available.
|
|
17
|
+
|
|
18
|
+
## Yarn & Yarn Workspaces
|
|
19
|
+
|
|
20
|
+
### Set up yarn
|
|
21
|
+
|
|
22
|
+
To configure Lerna to use yarn under the hood, we need to go to the **lerna.json** file and add the **npmClient** key with the value `yarn`. Its value is `npm` by default.
|
|
23
|
+
|
|
24
|
+
```json[lerna.json]
|
|
25
|
+
{
|
|
26
|
+
"packages": [
|
|
27
|
+
"packages/*",
|
|
28
|
+
],
|
|
29
|
+
"version": "0.0.0",
|
|
30
|
+
"npmClient": "yarn"
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Set up yarn workspaces
|
|
35
|
+
|
|
36
|
+
To configure Lerna to use Yarn Workspaces, first, we need to [Set up yarn](#set-up-yarn). Then we have to configure it in the **lerna.json** and **package.json** files.
|
|
37
|
+
|
|
38
|
+
To do so, let's use the following folder structure as an example:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
fullstack-pro
|
|
42
|
+
├── packages
|
|
43
|
+
│ ├── sample-core/
|
|
44
|
+
│ ├── sample-platform/
|
|
45
|
+
│ │ ├── browser
|
|
46
|
+
│ │ └── server/
|
|
47
|
+
│ ...
|
|
48
|
+
├── portable-devices
|
|
49
|
+
│ └── desktop
|
|
50
|
+
│ └── mobile
|
|
51
|
+
├── packages-modules
|
|
52
|
+
│ └── counter
|
|
53
|
+
│ │ ├── browser/
|
|
54
|
+
│ │ └── server/
|
|
55
|
+
├── servers
|
|
56
|
+
│ ├── backend-server/
|
|
57
|
+
│ ├── frontend-server/
|
|
58
|
+
│ ...
|
|
59
|
+
|── package.json
|
|
60
|
+
└── lerna.json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
In the **package.json** file, we add the **workspaces** key with a list of globs that indicates the folders where we want to store our packages.
|
|
64
|
+
|
|
65
|
+
```json[package.json]
|
|
66
|
+
{
|
|
67
|
+
"name": "root",
|
|
68
|
+
"private": true,
|
|
69
|
+
"workspaces": [
|
|
70
|
+
"packages": [
|
|
71
|
+
"portable-devices/*",
|
|
72
|
+
"packages-modules/**",
|
|
73
|
+
"packages/**",
|
|
74
|
+
"servers/*"
|
|
75
|
+
]
|
|
76
|
+
],
|
|
77
|
+
"devDependencies": {
|
|
78
|
+
"lerna": "^3.22.1"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
In the **lerna.json** file, we can remove the **packages** key because the **workspaces** key in the **package.json** file overrides it. We also need to add the **useWorkspaces** key with the value `true`.
|
|
84
|
+
|
|
85
|
+
```json[lerna.json]
|
|
86
|
+
{
|
|
87
|
+
"version": "0.0.0",
|
|
88
|
+
"npmClient": "yarn",
|
|
89
|
+
"useWorkspaces": true
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Lerna
|
|
94
|
+
|
|
95
|
+
- [Getting Started with lerna](./lerna-build-tools.md)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Lint and Formatter
|
|
4
|
+
description: Lint and Formatter
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Lint and Formatter...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Lint and Formatter
|
|
13
|
+
|
|
14
|
+
`eslint` and `prettier` is used along each other. `eslint-config-airbnb-base` (not `eslint-config-airbnb`, which includes `jsx` rules) is used as well. [`eslint-plugin-jest`](https://github.com/jest-community/eslint-plugin-jest/issues) and [`eslint-plugin-markdown`](https://github.com/eslint/eslint-plugin-markdown) (not for markdown itself, but for code block snippet appeared in markdown) are also configured.
|
|
15
|
+
|
|
16
|
+
By configuring `overrides` in `.eslintrc.js`, both of typescript and javascript files are able to be linted by `eslint`. (e.g. So typescript rules are not applied to `.js` files.)
|
|
17
|
+
|
|
18
|
+
[`markdownlint`](https://github.com/DavidAnson/markdownlint) is configured by [`markdownlint-cli`](https://github.com/igorshubovych/markdownlint-cli#readme).
|
|
19
|
+
|
|
20
|
+
[`commitlint`](https://github.com/conventional-changelog/commitlint) is used as commit message linter. You can `yarn lint:md .`, for example. Refer to [conventional commits](https://www.conventionalcommits.org/en/) for more details.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
meta:
|
|
3
|
+
title: Mobile Setup
|
|
4
|
+
description: Mobile Setup
|
|
5
|
+
date: '2023-06-02T00:00:00'
|
|
6
|
+
updated: '2024-06-02T00:00:00'
|
|
7
|
+
excerpt: Mobile Setup...
|
|
8
|
+
headers:
|
|
9
|
+
Cache-Control: no-cache
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Debugging
|
|
13
|
+
|
|
14
|
+
Follow Expo document on using [react-native-debugger](https://docs.expo.dev/workflow/debugging/#react-native-debugger)
|
|
15
|
+
|
|
16
|
+
The debugger also enables apollo-client devtools.
|