Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
570ac8e
chore: move vitest at the root
jmfrancois Apr 8, 2026
aa1286b
chore: save
jmfrancois Apr 8, 2026
3d08d03
fix: build and lint
jmfrancois Apr 8, 2026
8bf4554
chore: move up eslint
jmfrancois Apr 8, 2026
1eb6946
chore: move talend and rimraf devdeps
jmfrancois Apr 8, 2026
802f1bf
chore: save
jmfrancois Apr 8, 2026
cd5d181
chore: move stylelint up
jmfrancois Apr 8, 2026
4f453d1
fix: icon scripts
jmfrancois Apr 8, 2026
bd764f2
chore: add more script to turbo
jmfrancois Apr 8, 2026
a553bdc
chore: move up cross-env
jmfrancois Apr 8, 2026
6318e7d
fix: test:demo
jmfrancois Apr 8, 2026
f197e1c
chore: update turbo config
jmfrancois Apr 8, 2026
25f6737
chore: add changeset
jmfrancois Apr 8, 2026
738c92f
chore: move back packages needed as devDeps
jmfrancois Apr 8, 2026
12f6328
fix: test:demo script
jmfrancois Apr 8, 2026
a53ad15
fix: turbo config for storybook-docs
jmfrancois Apr 8, 2026
73560bd
fix: add missing import
jmfrancois Apr 8, 2026
1a37aca
chore: use asdf
jmfrancois Apr 8, 2026
eb962e9
chore: move to src folder
jmfrancois Apr 8, 2026
1a71f2f
fix: build of design system
jmfrancois Apr 9, 2026
7430d8a
fix: turbo build:lib
jmfrancois Apr 9, 2026
f5d559d
fix: storybook-lib tsconfig
jmfrancois Apr 9, 2026
9f3279c
fix: build storybook-lib
jmfrancois Apr 9, 2026
082273d
docs: add adr
jmfrancois Apr 9, 2026
14409c3
test: fix error in CI
jmfrancois Apr 9, 2026
078570d
fix: ts error in Stepper
jmfrancois Apr 9, 2026
feac793
fix: ts config of containers and stepper
jmfrancois Apr 9, 2026
658d1fd
test: update some
jmfrancois Apr 9, 2026
d12fde2
chore: rename lint and test scripts
jmfrancois Apr 9, 2026
3563767
fix: package
jmfrancois Apr 9, 2026
f23b62f
chore(CI): update test:demo call to storybook:build
jmfrancois Apr 9, 2026
5dea9ec
chore: remove AI comment
jmfrancois Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/grumpy-planets-show.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@talend/local-libs-webpack-plugin': major
---

move lib to src folder
59 changes: 59 additions & 0 deletions .changeset/open-cases-brush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
'@talend/react-faceted-search-query-client': patch
'@talend/babel-plugin-import-from-index': patch
'@talend/local-libs-webpack-plugin': patch
'@talend/babel-plugin-import-from-lib': patch
'@talend/scripts-config-react-webpack': patch
'@talend/scripts-config-storybook-lib': patch
'@talend/dynamic-cdn-webpack-plugin': patch
'@talend/scripts-config-typescript': patch
'@talend/scripts-config-stylelint': patch
'@talend/babel-plugin-assets-api': patch
'@talend/scripts-config-prettier': patch
'@talend/babel-plugin-import-d3': patch
'@talend/scripts-yarn-workspace': patch
'@talend/eslint-config': patch
'@talend/scripts-publish-local': patch
'@talend/json-schema-form-core': patch
'@talend/scripts-config-babel': patch
'@talend/ui-playground-vite': patch
'@talend/react-cmf-webpack-plugin': patch
'@talend/scripts-config-cdn': patch
'@talend/react-faceted-search': patch
'@talend/storybook-docs': patch
'@talend/design-system': patch
'@talend/design-tokens': patch
'@talend/react-flow-designer': patch
'@talend/router-bridge': patch
'@talend/react-storybook-cmf': patch
'@talend/ui-storybook-one': patch
'@talend/scripts-locales': patch
'@talend/react-bootstrap': patch
'@talend/design-docs': patch
'@talend/bootstrap-sass': patch
'@talend/assets-api': patch
'@talend/react-cmf-router': patch
'@talend/react-components': patch
'@talend/react-containers': patch
'@talend/ui-playground': patch
'@talend/eslint-plugin': patch
'@talend/scripts-utils': patch
'@talend/module-to-cdn': patch
'@talend/scripts-core': patch
'@talend/upgrade-deps': patch
'@talend/react-cmf-cqrs': patch
'@talend/scripts-cmf': patch
'@talend/react-dataviz': patch
'@talend/react-stepper': patch
'@talend/react-forms': patch
'@talend/icons': patch
'@talend/react-sagas': patch
'@talend/bootstrap-theme': patch
'@talend/utils': patch
'@talend/react-a11y': patch
'@talend/http': patch
'@talend/react-cmf': patch
---

chore: move devDeps at the repository level, review build, test lint.\

27 changes: 21 additions & 6 deletions .github/actions/setup-node/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,25 @@ inputs:
runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v4
- name: Cache asdf
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
with:
node-version-file: '.tool-versions'
# set up auth to read in from env.NODE_AUTH_TOKEN.
registry-url: 'https://npm.pkg.github.com'
scope: '@talend'
path: |
~/.asdf/
key: ${{ runner.os }}-${{ hashFiles('**/.tool-versions') }}-v0.18.0
restore-keys: |
${{ runner.os }}-asdf-v0.18.0

- name: Install asdf & tools
uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47 # v4.0.1

- name: Setup npm registry
shell: bash
run: |
echo "//npm.pkg.github.com/:always-auth=true" >> ~/.npmrc
if [ -n "${{ inputs.NODE_AUTH_TOKEN }}" ]; then
echo "//npm.pkg.github.com/:_authToken=${{ inputs.NODE_AUTH_TOKEN }}" >> ~/.npmrc
fi

- name: Install yarn
shell: bash
Expand All @@ -33,3 +45,6 @@ runs:
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-

- name: Cache for Turbo
uses: rharkor/caching-for-turbo@0abc2381e688c4d2832f0665a68a01c6e82f0d6c #v2.3.11
4 changes: 3 additions & 1 deletion .github/workflows/changeset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@ jobs:
- name: Install and Build
if: steps.changesetfiles.outputs.count == 1
run: yarn --frozen-lockfile
run: |
yarn --frozen-lockfile
yarn build
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/demo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,11 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: yarn install --frozen-lockfile

- name: Build
run: yarn build

- name: Build Demo
run: yarn test:demo
run: yarn storybook:build

- name: Checkout demo branch
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/pr-demo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,11 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: yarn install --frozen-lockfile

- name: Build
run: yarn build

- name: Build Demo
run: yarn test:demo
run: yarn storybook:build

- name: Checkout demo branch
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/pr-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,15 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Build
run: yarn build

- name: eslint + stylelint
continue-on-error: true
id: eslint
run: yarn lint
run: |
yarn eslint:run --concurrency=1
yarn stylelint:run --concurrency=1

- name: Merge lint
uses: ./.github/actions/lint-merge-report
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/pr-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,12 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Build
run: yarn build

- name: Test
run: yarn test:cov
run: |
yarn vitest:cov --concurrency=1

- name: Jest Coverage Comment
uses: MishaKav/jest-coverage-comment@c480abe47ef4f7bcd87bd8b5e6043fdfb1c4d270 #1.0.32
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
- name: Install
run: yarn install --frozen-lockfile

- name: Build
run: yarn build

- name: Pre-release talend/ui
id: version
run: |
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/visual-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ jobs:
uses: ./.github/actions/setup-node

- name: Install dependencies
run: yarn --frozen-lock
run: |
yarn --frozen-lock
yarn build

- name: Publish PR to DS Chromatic
if: github.ref != 'refs/heads/master'
Expand Down
3 changes: 1 addition & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,5 @@
"pattern": "fork/**"
}
],
"typescript.validate.enable": true,
"javascript.validate.enable": true
"js/ts.validate.enabled": true
}
142 changes: 142 additions & 0 deletions docs/adr-2026-04-use-turbo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# ADR: Set up Turbo Repo and Hoist Dev Dependencies

## Context

Talend/UI is a Yarn workspaces monorepo with multiple packages, tools, and forked dependencies spread across `packages/`, `tools/`, and `fork/` directories. Each of these packages and tools has its own `package.json` with duplicated development dependencies.

Our current build orchestration relies on custom Yarn workspace scripts managed through `@talend/scripts-yarn-workspace`. As the monorepo grows, we face several challenges:

- **Redundant installations**: Development tools like Babel, ESLint, TypeScript, and build scripts are installed in every package's `node_modules`, consuming significant disk space and installation time.
- **Lack of build caching**: Without proper task orchestration and caching, builds are not optimized across the monorepo, leading to repeated compilation of unchanged dependencies.
- **Inconsistent tooling versions**: Managing identical versions of development tools across multiple `package.json` files is error-prone and difficult to maintain.
- **Slow developer experience**: Install times and build times are longer than necessary due to redundant installations and lack of caching.

Additionally, the transition to ECMAScript Modules (ESM) and modern build tooling (as defined in ADR: Add support to ECMAScript Modules) requires a more sophisticated build orchestration strategy to handle multiple output formats (`lib/` for CommonJS and `lib-esm/` for ESM).

## Problem

As the monorepo scales, we need:

1. **Efficient task orchestration** — Coordinate builds across packages with proper dependency tracking and parallelization.
2. **Build caching** — Avoid rebuilding packages when their inputs haven't changed.
3. **Centralized tool management** — Reduce disk usage and ensure consistent tool versions across the monorepo.
4. **Faster CI/CD pipelines** — Enable distributed task execution and incremental builds.

## Decision

We adopt **Turbo** as our monorepo build orchestration tool and **hoist development dependencies to the workspace root**.

### Turbo Setup

Turbo is configured via `turbo.json` to:

- Define task dependencies and outputs for all build tasks (e.g., `build:lib`, `build:lib:esm`, `test`, `lint`)
- Enable automatic caching of task outputs based on input changed files
- Parallelize independent tasks across packages
- Support distributed task execution for faster CI/CD pipelines

Example task configuration:

```json
{
"tasks": {
"build:lib": {
"dependsOn": ["^build:lib"],
"outputs": ["lib/**"]
}
}
}
```

### Dev Dependencies Hoisting

Development dependencies are moved to the root `package.json`:

- **Shared tools**: Babel presets, ESLint configs, TypeScript config, Prettier, and all `@talend/scripts-*` packages
- **Locale packages**: Localization files (`@talend/locales-*`) used across packages
- **Peer dependencies for dev**: React, React DOM, and other peer dependencies used during development

This approach:

- Eliminates duplicate `node_modules` directories for development tools
- Ensures consistent tool versions across the entire monorepo
- Reduces installation time and disk usage
- Simplifies dependency management (single source of truth)

Individual packages retain only **runtime dependencies** specific to their functionality (e.g., `lodash`, `date-fns`, `classnames`).

## Alternatives Considered

### 1. Keep Current Setup (No Turbo, Distributed Dev Dependencies)

**Pros:**

- Minimal changes required
- Packages remain fully independent

**Cons:**

- Continued redundant installations and slow build times
- Lack of build caching and optimization
- Difficult to scale as the monorepo grows
- Higher CI/CD costs due to lack of caching and incremental builds

### 2. Use Nx Instead of Turbo

**Pros:**

- Nx provides advanced features like computation hashing and distributed computation
- More opinionated project structure

**Cons:**

- Heavier framework with more learning curve
- Overkill for current needs
- Would require more significant restructuring

### 3. Partially Hoist Dev Dependencies

**Pros:**

- Reduces disk usage without fully removing package autonomy

**Cons:**

- Still leaves redundancy and inconsistency
- More complex to maintain than full hoisting
- Does not fully solve the caching and orchestration problems

## Consequences

### Positive

- **Faster builds**: Turbo's caching prevents rebuilding unchanged packages.
- **Reduced disk usage**: Dev dependencies are installed once at the root instead of in each package.
- **Faster CI/CD**: Incremental builds and caching reduce total build time in pipelines.
- **Simplified dependency management**: Tool versions are managed in a single file.
- **Better parallelization**: Turbo automatically parallelizes independent tasks.
- **Future-proof**: Enables easier adoption of distributed task execution and remote caching.

### Negative

- **Setup complexity**: Requires careful configuration of task dependencies in `turbo.json`.
- **Learning curve**: Developers need to understand Turbo concepts (tasks, caching, outputs).
- **Potential compatibility issues**: Moving dev dependencies to root may expose version conflicts if individual packages had pinned to different versions.
- **Debugging complexity**: Turbo caching can sometimes make debugging harder if developers don't understand what's cached.

### Risks

- **Misconfigured task outputs**: If `outputs` in `turbo.json` don't match actual build outputs, caching will fail silently, causing stale artifacts to be served.
- **Root-level dependency bloat**: Over time, the root `package.json` could accumulate unnecessary dependencies if not carefully curated.
- **Local development friction**: Developers must run `yarn install` at the root; package-level `yarn install` in subdirectories won't work as expected.

## Implementation Notes

1. **Migration approach**: Move dev dependencies incrementally from individual packages to the root, testing each batch to ensure no regressions.
2. **Task configuration**: Configure task dependencies carefully in `turbo.json` to reflect the actual build dependency graph (e.g., `"dependsOn": ["^build:lib"]` means "run after dependencies' build:lib").
3. **Documentation**: Update developer guides to explain the new setup and how to run tasks correctly.
4. **CI/CD updates**: Update CI pipelines to use `turbo` commands for task orchestration and to take advantage of caching (e.g., `.turbo/` cache in CI).

## Related Decisions

- **ADR: Add support to ECMAScript Modules (ESM)** — This ADR enables efficient handling of multiple output formats through Turbo's task orchestration.
12 changes: 1 addition & 11 deletions fork/bootstrap-sass/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,7 @@
"main": "assets/javascripts/bootstrap.js",
"style": "assets/stylesheets/_bootstrap.scss",
"sass": "assets/stylesheets/_bootstrap.scss",
"scripts": {
"build": "echo nothing to build in bootsrap-sass",
"test": "echo nothing to test in bootsrap-sass",
"test:update": "echo nothing to test in bootsrap-sass",
"test:cov": "echo nothing to test in bootsrap-sass"
},
"scripts": {},
"files": [
"assets",
"CHANGELOG.md",
Expand Down Expand Up @@ -38,10 +33,5 @@
},
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@talend/eslint-config": "^14.1.2",
"@talend/eslint-plugin": "^1.8.1",
"eslint": "^10.1.0"
}
}
13 changes: 3 additions & 10 deletions fork/dynamic-cdn-webpack-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
"access": "public"
},
"scripts": {
"test": "vitest run",
"test:cov": "vitest run --coverage",
"test:update": "vitest run --update"
"vitest:run": "vitest run",
"vitest:cov": "vitest run --coverage",
"vitest:update": "vitest run --update"
},
"files": [
"index.js",
Expand All @@ -45,16 +45,9 @@
"webpack": "^5.105.4"
},
"devDependencies": {
"@eslint/js": "^9.39.4",
"eslint": "^10.1.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.5",
"globals": "^15.15.0",
"html-webpack-plugin": "^5.6.6",
"@vitest/coverage-v8": "^4.1.2",
"mz": "^2.7.0",
"rimraf": "^6.1.3",
"vitest": "^4.1.2",
"webpack": "^5.105.4",
"webpack-cli": "^6.0.1",
"webpack-manifest-plugin": "^5.0.1"
Expand Down
Loading
Loading