mirror of
https://github.com/twentyhq/twenty.git
synced 2024-12-12 11:20:40 +03:00
992602b307
TL;DR: - removed `--configuration={args.scope}` from `storybook:static:test` for the `storybook:static` part, as it was making `front-sb-test` jobs in CI not reuse the cache from the `front-sb-build` job and re-build storybook every time. - replaced it with a new `test` configuration which optimizes storybook build for tests and builds storybook 2x faster. ## Fix storybook:build cache usage in CI `storybook:static:test` executes two scripts in parallel: 1. `storybook:static`, which depends on `storybook:build` 1.a. it builds storybook first with `storybook:build`, the output directory is `storybook-static`. 1.b. then it launches an `http-server`, using what has been built in `storybook-static` 2. `storybook:test` to execute tests (needs the storybook http-server to be running) When passing `--configuration=pages` or `--configuration=modules` to `storybook:static` from step 1, those configurations are passed to the `storybook:build` script from step 1.a as well. But for Nx `storybook:build` and `storybook:build --configuration=pages` (or `modules`) are not the same command, therefore one does not reuse the cache of the other because they could output completely different things. As `front-sb-test` jobs are passing `--configuration={args.scope}` to `storybook:static`, the cache of the previously executed `storybook:build` (from `front-sb-build`) is not reused and therefore each job re-builds Storybook with its own scope, which increases CI time. ### Solution - Removed scope configurations from `storybook:static` and `storybook:build` scripts to avoid confusion. - `storybook:test` and `storybook:dev` can keep scope configurations as they can be useful and this doesn't impact storybook build cache in CI. ### Improve Storybook build time for testing Added the `test` configuration to `storybook:build` and `storybook:static` which makes Storybook build time 2x faster. It disables addons that slow down build time and are not used in tests.
301 lines
8.4 KiB
JSON
301 lines
8.4 KiB
JSON
{
|
|
"namedInputs": {
|
|
"default": ["{projectRoot}/**/*"],
|
|
"excludeStories": [
|
|
"default",
|
|
"!{projectRoot}/.storybook/*",
|
|
"!{projectRoot}/**/tsconfig.storybook.json",
|
|
"!{projectRoot}/**/*.stories.(ts|tsx)",
|
|
"!{projectRoot}/**/__stories__/*"
|
|
],
|
|
"excludeTests": [
|
|
"default",
|
|
"!{projectRoot}/**/jest.config.(js|ts)",
|
|
"!{projectRoot}/**/tsconfig.spec.json",
|
|
"!{projectRoot}/**/*.test.(ts|tsx)",
|
|
"!{projectRoot}/**/*.spec.(ts|tsx)",
|
|
"!{projectRoot}/**/__tests__/*"
|
|
],
|
|
"production": [
|
|
"default",
|
|
"excludeStories",
|
|
"excludeTests",
|
|
"!{projectRoot}/**/__mocks__/*",
|
|
"!{projectRoot}/**/testing/*"
|
|
]
|
|
},
|
|
"targetDefaults": {
|
|
"build": {
|
|
"cache": true,
|
|
"inputs": ["^production", "production"],
|
|
"dependsOn": ["^build"]
|
|
},
|
|
"start": {
|
|
"cache": true,
|
|
"dependsOn": ["^build"]
|
|
},
|
|
"lint": {
|
|
"executor": "@nx/eslint:lint",
|
|
"cache": true,
|
|
"outputs": ["{options.outputFile}"],
|
|
"options": {
|
|
"eslintConfig": "{projectRoot}/.eslintrc.cjs",
|
|
"cache": true,
|
|
"cacheLocation": "{workspaceRoot}/.cache/eslint",
|
|
"ignorePath": "{workspaceRoot}/.gitignore"
|
|
},
|
|
"configurations": {
|
|
"ci": { "cacheStrategy": "content" },
|
|
"fix": { "fix": true }
|
|
}
|
|
},
|
|
"fmt": {
|
|
"executor": "nx:run-commands",
|
|
"cache": true,
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"command": "prettier {args.files} --check --cache {args.cache} --cache-location {args.cacheLocation} --write {args.write} --cache-strategy {args.cacheStrategy}",
|
|
"cache": true,
|
|
"cacheLocation": "../../.cache/prettier/{projectRoot}",
|
|
"cacheStrategy": "metadata",
|
|
"write": false
|
|
},
|
|
"configurations": {
|
|
"ci": { "cacheStrategy": "content" },
|
|
"fix": { "write": true }
|
|
}
|
|
},
|
|
"typecheck": {
|
|
"executor": "nx:run-commands",
|
|
"cache": true,
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"command": "tsc -b tsconfig.json --incremental"
|
|
},
|
|
"configurations": {
|
|
"watch": { "watch": true }
|
|
}
|
|
},
|
|
"test": {
|
|
"executor": "@nx/jest:jest",
|
|
"cache": true,
|
|
"dependsOn": ["^build"],
|
|
"inputs": [
|
|
"^default",
|
|
"excludeStories",
|
|
"{workspaceRoot}/jest.preset.js"
|
|
],
|
|
"outputs": ["{projectRoot}/coverage"],
|
|
"options": {
|
|
"jestConfig": "{projectRoot}/jest.config.ts",
|
|
"coverage": true,
|
|
"coverageReporters": ["text-summary"],
|
|
"cacheDirectory": "../../.cache/jest/{projectRoot}"
|
|
},
|
|
"configurations": {
|
|
"ci": {
|
|
"ci": true,
|
|
"maxWorkers": 3
|
|
},
|
|
"coverage": { "coverageReporters": ["lcov", "text"] },
|
|
"watch": { "watch": true }
|
|
}
|
|
},
|
|
"test:e2e": {
|
|
"cache": true,
|
|
"dependsOn": ["^build"]
|
|
},
|
|
"storybook:build": {
|
|
"executor": "nx:run-commands",
|
|
"cache": true,
|
|
"dependsOn": ["^build"],
|
|
"inputs": ["^default", "excludeTests"],
|
|
"outputs": ["{projectRoot}/{options.output-dir}"],
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"command": "storybook build",
|
|
"output-dir": "storybook-static",
|
|
"config-dir": ".storybook"
|
|
},
|
|
"configurations": {
|
|
"test": {
|
|
"command": "storybook build --test"
|
|
}
|
|
}
|
|
},
|
|
"storybook:dev": {
|
|
"executor": "nx:run-commands",
|
|
"cache": true,
|
|
"dependsOn": ["^build"],
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"command": "storybook dev",
|
|
"config-dir": ".storybook"
|
|
}
|
|
},
|
|
"storybook:static": {
|
|
"executor": "nx:run-commands",
|
|
"dependsOn": ["storybook:build"],
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"command": "npx http-server {args.staticDir} -a={args.host} --port={args.port} --silent={args.silent}",
|
|
"staticDir": "storybook-static",
|
|
"host": "localhost",
|
|
"port": 6006,
|
|
"silent": true
|
|
},
|
|
"configurations": {
|
|
"test": {}
|
|
}
|
|
},
|
|
"storybook:coverage": {
|
|
"executor": "nx:run-commands",
|
|
"cache": true,
|
|
"inputs": [
|
|
"^default",
|
|
"excludeTests",
|
|
"{projectRoot}/coverage/storybook/coverage-storybook.json"
|
|
],
|
|
"outputs": [
|
|
"{projectRoot}/coverage/storybook",
|
|
"!{projectRoot}/coverage/storybook/coverage-storybook.json"
|
|
],
|
|
"options": {
|
|
"command": "npx nyc report --reporter={args.reporter} --reporter=text-summary -t {args.coverageDir} --report-dir {args.coverageDir} --check-coverage --cwd={projectRoot}",
|
|
"coverageDir": "coverage/storybook",
|
|
"reporter": "lcov"
|
|
},
|
|
"configurations": {
|
|
"text": { "reporter": "text" }
|
|
}
|
|
},
|
|
"storybook:test": {
|
|
"executor": "nx:run-commands",
|
|
"cache": true,
|
|
"inputs": ["^default", "excludeTests"],
|
|
"outputs": ["{projectRoot}/coverage/storybook"],
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"commands": [
|
|
"test-storybook --url http://localhost:{args.port} --maxWorkers=3 --coverage --coverageDirectory={args.coverageDir}",
|
|
"nx storybook:coverage {projectName} --coverageDir={args.coverageDir}"
|
|
],
|
|
"parallel": false,
|
|
"coverageDir": "coverage/storybook",
|
|
"port": 6006
|
|
}
|
|
},
|
|
"storybook:test:nocoverage": {
|
|
"executor": "nx:run-commands",
|
|
"inputs": ["^default", "excludeTests"],
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"commands": [
|
|
"test-storybook --url http://localhost:{args.port} --maxWorkers=3"
|
|
],
|
|
"port": 6006
|
|
}
|
|
},
|
|
"storybook:static:test": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"commands": [
|
|
"npx concurrently --kill-others --success=first -n SB,TEST 'nx storybook:static {projectName} --port={args.port} --configuration=test' 'npx wait-on tcp:{args.port} && nx storybook:test {projectName} --port={args.port}'"
|
|
],
|
|
"port": 6006
|
|
}
|
|
},
|
|
"storybook:performance:test": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"commands": [
|
|
"npx concurrently --kill-others --success=first -n SB,TEST 'nx storybook:dev {projectName} --configuration=performance --port={args.port}' 'npx wait-on tcp:{args.port} && nx storybook:test:nocoverage {projectName} --port={args.port} --configuration=performance'"
|
|
],
|
|
"port": 6006
|
|
}
|
|
},
|
|
"chromatic": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"cwd": "{projectRoot}",
|
|
"command": "cross-var chromatic --project-token=$CHROMATIC_PROJECT_TOKEN --build-script-name={args.targetPackageJsonScript} {args.ci}",
|
|
"targetPackageJsonScript": "storybook:build:chromatic"
|
|
},
|
|
"configurations": {
|
|
"ci": {
|
|
"ci": "--exit-zero-on-changes"
|
|
}
|
|
}
|
|
},
|
|
"@nx/jest:jest": {
|
|
"cache": true,
|
|
"inputs": [
|
|
"^default",
|
|
"excludeStories",
|
|
"{workspaceRoot}/jest.preset.js"
|
|
],
|
|
"options": {
|
|
"passWithNoTests": true
|
|
},
|
|
"configurations": {
|
|
"ci": {
|
|
"ci": true,
|
|
"codeCoverage": true
|
|
}
|
|
}
|
|
},
|
|
"@nx/eslint:lint": {
|
|
"cache": true,
|
|
"inputs": [
|
|
"default",
|
|
"{workspaceRoot}/.eslintrc.js",
|
|
"{workspaceRoot}/tools/eslint-rules/**/*"
|
|
]
|
|
},
|
|
"@nx/vite:test": {
|
|
"cache": true,
|
|
"inputs": ["default", "^default"]
|
|
},
|
|
"@nx/vite:build": {
|
|
"cache": true,
|
|
"dependsOn": ["^build"],
|
|
"inputs": ["default", "^default"]
|
|
}
|
|
},
|
|
"installation": {
|
|
"version": "18.3.3"
|
|
},
|
|
"generators": {
|
|
"@nx/react": {
|
|
"application": {
|
|
"style": "@emotion/styled",
|
|
"linter": "eslint",
|
|
"bundler": "vite",
|
|
"compiler": "swc",
|
|
"unitTestRunner": "jest",
|
|
"projectNameAndRootFormat": "derived"
|
|
},
|
|
"library": {
|
|
"style": "@emotion/styled",
|
|
"linter": "eslint",
|
|
"bundler": "vite",
|
|
"compiler": "swc",
|
|
"unitTestRunner": "jest",
|
|
"projectNameAndRootFormat": "derived"
|
|
},
|
|
"component": {
|
|
"style": "@emotion/styled"
|
|
}
|
|
}
|
|
},
|
|
"tasksRunnerOptions": {
|
|
"default": {
|
|
"options": {
|
|
"cacheableOperations": ["storybook:build"]
|
|
}
|
|
}
|
|
},
|
|
"useInferencePlugins": false,
|
|
"defaultBase": "main"
|
|
}
|