1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-06 00:13:28 +00:00
Commit Graph

6 Commits

Author SHA1 Message Date
Addison Beck
b481063810 fix(basic-lib generator): Ensure all project.json files have a rootDir value (#16384)
* fix(nx): add rootDir to existing project.json files

The @nx/js:tsc executor was creating builds with a structural mismatch where TypeScript
output files lived in a nested src/ directory, but package.json pointed to non-existent
dist/ paths. This caused "Cannot find module" errors throughout the dependency chain.

This fix adds the rootDir configuration to flatten the build output structure and updates
all package.json main/types fields to match the actual file locations.

Changes applied systematically across all affected libraries:
• Added "rootDir": "libs/{name}/src" to project.json build options
• Updated package.json "main" from "dist/index.js" to "index.js"
• Updated package.json "types" from "dist/index.d.ts" to "index.d.ts"

* fix(nx-plugin): set rootDir for any newly generated libs

The basic-lib generator was creating new libraries with the same package.json path bugs
that we just fixed in existing libraries. Without this template fix, any newly generated
library would inherit the broken configuration pattern.

Updated the generator templates to include:
• Added rootDir configuration to project.json template
• Fixed package.json template paths to use flattened structure
• Corrected template syntax bug (missing space in <%= name %>)

This ensures all future libraries created with "nx generate @bitwarden/nx-plugin:basic-lib"
will have proper build configuration from the start, preventing regression of the
systematic rootDir issue.
2025-09-22 12:32:23 -04:00
Addison Beck
5f7c0ae999 build: ensure new libraries are added to the root jest.config (#16166)
* Add missing libs to jest.config.js

Added 15 missing libraries to the jest projects array:
- libs/assets
- libs/client-type
- libs/core-test-utils
- libs/dirt/card
- libs/guid
- libs/logging
- libs/messaging-internal
- libs/messaging
- libs/serialization
- libs/state-test-utils
- libs/state
- libs/storage-core
- libs/storage-test-utils
- libs/tools/export/vault-export/vault-export-ui
- libs/user-core

This ensures all existing libraries with jest.config.js files are included in CI test runs.

* Update basic-lib generator to add new libs to jest.config.js

- Added updateJestConfig function that automatically adds new libraries to jest.config.js
- Function finds the appropriate alphabetical position for the new library
- Added comprehensive tests for the new functionality
- Ensures new libraries are included in CI test runs from creation

This prevents the issue where new libraries are created but their tests
are not run in CI because they are missing from the jest configuration.

* Fix import statements in state-definitions and deserialization-helpers tests

- Fixed ClientLocations import in state-definitions.spec.ts to use @bitwarden/storage-core instead of relative import
- Simplified deserialization-helpers.spec.ts import to use library root @bitwarden/serialization
2025-08-27 11:56:42 -04:00
Addison Beck
033642c0db docs: document the basic-lib generator (#15891) 2025-08-05 12:21:16 -04:00
Addison Beck
f11d50ada7 build(nx): create per-lib tsconfig.eslint configs (#15519) 2025-07-07 14:17:52 -07:00
Addison Beck
662a973d62 fix(nx-plugin): remove extra / from tsconfig.spec template (#15258) 2025-06-19 16:38:00 -04:00
Addison Beck
e8224fdbe3 feat(nx): add basic-lib generator for streamlined library creation (#14992)
* feat(nx): add basic-lib generator for streamlined library creation

This adds a new nx-plugin library with a generator for creating "common" type
Bitwarden libs. It is set up to accept a lib name, description, team, and
directory. It then
- Creates a folder in the directory (default to libs)
- Sets up complete library scaffolding:
  - README with team ownership
  - Build, lint and test task configuration
  - Test infrastructure
- Configures TypeScript path mapping
- Updates CODEOWNERS with team ownership
- Runs npm i

This will make library creation more consistent and reduce manual boilerplate setup.

The plugin design itself was generated by `npx nx g plugin`. This means we
used a plugin to generate a plugin that exports generators. To create our
generator generator, we first needed a generator.

* fix(dirt/card): correct tsconfig path in jest configuration

Fix the relative path to tsconfig.base in the dirt/card library's Jest config.
The path was incorrectly using four parent directory traversals (../../../../)
when only three (../../../) were needed to reach the project root.

* chore(codeowners): clarify some nx ownership stuff
2025-06-05 14:20:23 -04:00