mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-12 07:02:49 +00:00
initial setup
This commit is contained in:
8
.changeset/README.md
Normal file
8
.changeset/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Changesets
|
||||
|
||||
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
|
||||
with multi-package repos, or single-package repos to help you version and publish your code. You can
|
||||
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
|
||||
|
||||
We have a quick list of common questions to get you started engaging with this project in
|
||||
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
|
||||
10
.changeset/config.json
Normal file
10
.changeset/config.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json",
|
||||
"changelog": "@changesets/cli/changelog",
|
||||
"commit": false,
|
||||
"fixed": [],
|
||||
"linked": [],
|
||||
"access": "public",
|
||||
"updateInternalDependencies": "patch",
|
||||
"ignore": ["@zitadel/docs"]
|
||||
}
|
||||
10
.eslintrc.js
Normal file
10
.eslintrc.js
Normal file
@@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
// This tells ESLint to load the config from the package `eslint-config-zitadel`
|
||||
extends: ["zitadel"],
|
||||
settings: {
|
||||
next: {
|
||||
rootDir: ["apps/*/"],
|
||||
},
|
||||
},
|
||||
};
|
||||
44
.github/workflows/release.yml
vendored
Normal file
44
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup pnpm 7
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 7
|
||||
|
||||
- name: Setup Node.js 16.x
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 16.x
|
||||
|
||||
- name: Install Dependencies
|
||||
run: pnpm i
|
||||
|
||||
- name: Create Release Pull Request or Publish to npm
|
||||
id: changesets
|
||||
uses: changesets/action@v1
|
||||
with:
|
||||
# This expects you to have a script called release which does a build for your packages and calls changeset publish
|
||||
publish: pnpm release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
- name: Send a Slack notification if a publish happens
|
||||
if: steps.changesets.outputs.published == 'true'
|
||||
# You can do something when a publish happens.
|
||||
run: my-slack-bot send-notification --message "A new version of ${GITHUB_REPOSITORY} was published!"
|
||||
13
.gitignore
vendored
Normal file
13
.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
.turbo
|
||||
*.log
|
||||
.next
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
.env
|
||||
.cache
|
||||
server/dist
|
||||
public/dist
|
||||
.turbo
|
||||
57
README.md
Normal file
57
README.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# ZITADEL typescript with Changesets
|
||||
|
||||
This is an monorepo containing all typescript/javascript packages and applications for ZITADEL powered by Turborepo. Versioning and package publishing is handled by [Changesets](https://github.com/changesets/changesets) and fully automated with GitHub Actions.
|
||||
|
||||
## What's inside?
|
||||
|
||||
This Turborepo includes the following:
|
||||
|
||||
### Apps and Packages
|
||||
|
||||
- `login`: The new login UI powered by Next.js
|
||||
- `@zitadel/core`: core node SDK
|
||||
- `@zitadel/react-utils`: shared React utilities
|
||||
- `@zitadel/tsconfig`: shared `tsconfig.json`s used throughout the monorepo
|
||||
- `eslint-config-zitadel`: ESLint preset
|
||||
|
||||
Each package and app is 100% [TypeScript](https://www.typescriptlang.org/).
|
||||
|
||||
### Utilities
|
||||
|
||||
This repo has some additional tools already setup for you:
|
||||
|
||||
- [TypeScript](https://www.typescriptlang.org/) for static type checking
|
||||
- [ESLint](https://eslint.org/) for code linting
|
||||
- [Prettier](https://prettier.io) for code formatting
|
||||
|
||||
### Useful commands
|
||||
|
||||
- `yarn build` - Build all packages and the docs site
|
||||
- `yarn dev` - Develop all packages and the docs site
|
||||
- `yarn lint` - Lint all packages
|
||||
- `yarn changeset` - Generate a changeset
|
||||
- `yarn clean` - Clean up all `node_modules` and `dist` folders (runs each package's clean script)
|
||||
|
||||
## Versioning and Publishing packages
|
||||
|
||||
Package publishing has been configured using [Changesets](https://github.com/changesets/changesets). Please review their [documentation](https://github.com/changesets/changesets#documentation) to familiarize yourself with the workflow.
|
||||
|
||||
This example comes with automated npm releases setup in a [GitHub Action](https://github.com/changesets/action). To get this working, you will need to create an `NPM_TOKEN` and `GITHUB_TOKEN` in your repository settings. You should also install the [Changesets bot](https://github.com/apps/changeset-bot) on your GitHub repository as well.
|
||||
|
||||
For more information about this automation, refer to the official [changesets documentation](https://github.com/changesets/changesets/blob/main/docs/automating-changesets.md)
|
||||
|
||||
### npm
|
||||
|
||||
If you want to publish package to the public npm registry and make them publicly available, this is already setup.
|
||||
|
||||
To publish packages to a private npm organization scope, **remove** the following from each of the `package.json`'s
|
||||
|
||||
```diff
|
||||
- "publishConfig": {
|
||||
- "access": "public"
|
||||
- },
|
||||
```
|
||||
|
||||
### GitHub Package Registry
|
||||
|
||||
See [Working with the npm registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#publishing-a-package-using-publishconfig-in-the-packagejson-file)
|
||||
4
apps/docs/.eslintrc.js
Normal file
4
apps/docs/.eslintrc.js
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: ["zitadel"],
|
||||
};
|
||||
5
apps/docs/next-env.d.ts
vendored
Normal file
5
apps/docs/next-env.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||
3
apps/docs/next.config.js
Normal file
3
apps/docs/next.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
reactStrictMode: true,
|
||||
};
|
||||
27
apps/docs/package.json
Normal file
27
apps/docs/package.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "@zitadel/docs",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "next build",
|
||||
"start": "next start ",
|
||||
"dev": "next dev -p 3002",
|
||||
"lint": "next lint",
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
|
||||
},
|
||||
"dependencies": {
|
||||
"@zitadel/core": "workspace:*",
|
||||
"@zitadel/utils": "workspace:*",
|
||||
"next": "latest",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@zitadel/tsconfig": "workspace:*",
|
||||
"@types/node": "^17.0.12",
|
||||
"@types/react": "^18.0.22",
|
||||
"@types/react-dom": "^18.0.7",
|
||||
"eslint-config-zitadel": "workspace:*",
|
||||
"typescript": "^4.5.4"
|
||||
}
|
||||
}
|
||||
14
apps/docs/src/pages/index.tsx
Normal file
14
apps/docs/src/pages/index.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Button } from "@zitadel/core";
|
||||
import { useIsomorphicLayoutEffect } from "@zitadel/utils";
|
||||
|
||||
export default function Docs() {
|
||||
useIsomorphicLayoutEffect(() => {
|
||||
console.log("zitadel docs page");
|
||||
}, []);
|
||||
return (
|
||||
<div>
|
||||
<h1>zitadel Documentation</h1>
|
||||
<Button>Click me</Button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
10
apps/docs/tsconfig.json
Normal file
10
apps/docs/tsconfig.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"exclude": ["node_modules"],
|
||||
"extends": "@zitadel/tsconfig/nextjs.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"outDir": "dist",
|
||||
"incremental": true
|
||||
},
|
||||
"include": ["src", "next-env.d.ts"]
|
||||
}
|
||||
4
meta.json
Normal file
4
meta.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Monorepo with Changesets",
|
||||
"description": "Simple Next.js monorepo preconfigured to publish packages via Changesets"
|
||||
}
|
||||
21
package.json
Executable file
21
package.json
Executable file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "turbo run build",
|
||||
"dev": "turbo run dev --no-cache --continue",
|
||||
"lint": "turbo run lint",
|
||||
"clean": "turbo run clean && rm -rf node_modules",
|
||||
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
|
||||
"changeset": "changeset",
|
||||
"version-packages": "changeset version",
|
||||
"release": "turbo run build --filter=docs^... && changeset publish"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/cli": "^2.22.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-zitadel": "workspace:*",
|
||||
"prettier": "^2.5.1",
|
||||
"turbo": "latest"
|
||||
},
|
||||
"packageManager": "pnpm@7.15.0"
|
||||
}
|
||||
11
packages/eslint-config-zitadel/index.js
Normal file
11
packages/eslint-config-zitadel/index.js
Normal file
@@ -0,0 +1,11 @@
|
||||
module.exports = {
|
||||
extends: ["next", "turbo", "prettier"],
|
||||
rules: {
|
||||
"@next/next/no-html-link-for-pages": "off",
|
||||
},
|
||||
parserOptions: {
|
||||
babelOptions: {
|
||||
presets: [require.resolve("next/babel")],
|
||||
},
|
||||
},
|
||||
};
|
||||
15
packages/eslint-config-zitadel/package.json
Normal file
15
packages/eslint-config-zitadel/package.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "eslint-config-zitadel",
|
||||
"version": "0.0.0",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"eslint-config-next": "latest",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-react": "7.28.0",
|
||||
"eslint-config-turbo": "latest"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
4
packages/zitadel-core/.eslintrc.js
Normal file
4
packages/zitadel-core/.eslintrc.js
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: ["zitadel"],
|
||||
};
|
||||
31
packages/zitadel-core/package.json
Normal file
31
packages/zitadel-core/package.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "@zitadel/core",
|
||||
"version": "0.0.0",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.mjs",
|
||||
"types": "./dist/index.d.ts",
|
||||
"sideEffects": false,
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"dist/**"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsup src/index.tsx --format esm,cjs --dts --external react",
|
||||
"dev": "tsup src/index.tsx --format esm,cjs --watch --dts --external react",
|
||||
"lint": "eslint \"src/**/*.ts*\"",
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@zitadel/tsconfig": "workspace:*",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-zitadel": "workspace:*",
|
||||
"@types/react": "^17.0.13",
|
||||
"@types/react-dom": "^17.0.8",
|
||||
"react": "^17.0.2",
|
||||
"tsup": "^5.10.1",
|
||||
"typescript": "^4.5.3"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
11
packages/zitadel-core/src/Button.tsx
Normal file
11
packages/zitadel-core/src/Button.tsx
Normal file
@@ -0,0 +1,11 @@
|
||||
import * as React from "react";
|
||||
|
||||
export interface ButtonProps {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
export function Button(props: ButtonProps) {
|
||||
return <button>{props.children}</button>;
|
||||
}
|
||||
|
||||
Button.displayName = "Button";
|
||||
2
packages/zitadel-core/src/index.tsx
Normal file
2
packages/zitadel-core/src/index.tsx
Normal file
@@ -0,0 +1,2 @@
|
||||
import * as React from "react";
|
||||
export { Button, type ButtonProps } from "./Button";
|
||||
5
packages/zitadel-core/tsconfig.json
Normal file
5
packages/zitadel-core/tsconfig.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": "@zitadel/tsconfig/react-library.json",
|
||||
"include": ["."],
|
||||
"exclude": ["dist", "build", "node_modules"]
|
||||
}
|
||||
20
packages/zitadel-tsconfig/base.json
Normal file
20
packages/zitadel-tsconfig/base.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Default",
|
||||
"compilerOptions": {
|
||||
"composite": false,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"inlineSources": false,
|
||||
"isolatedModules": true,
|
||||
"moduleResolution": "node",
|
||||
"noUnusedLocals": false,
|
||||
"noUnusedParameters": false,
|
||||
"preserveWatchOutput": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
20
packages/zitadel-tsconfig/nextjs.json
Normal file
20
packages/zitadel-tsconfig/nextjs.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Next.js",
|
||||
"extends": "./base.json",
|
||||
"compilerOptions": {
|
||||
"allowJs": true,
|
||||
"declaration": false,
|
||||
"declarationMap": false,
|
||||
"incremental": true,
|
||||
"jsx": "preserve",
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"module": "esnext",
|
||||
"noEmit": true,
|
||||
"resolveJsonModule": true,
|
||||
"rootDir": "src",
|
||||
"target": "es5"
|
||||
},
|
||||
"include": ["src", "next-env.d.ts"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
10
packages/zitadel-tsconfig/node14.json
Normal file
10
packages/zitadel-tsconfig/node14.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Node 14",
|
||||
"extends": "./base.json",
|
||||
"compilerOptions": {
|
||||
"lib": ["ES2020"],
|
||||
"module": "commonjs",
|
||||
"target": "ES2020"
|
||||
}
|
||||
}
|
||||
9
packages/zitadel-tsconfig/package.json
Normal file
9
packages/zitadel-tsconfig/package.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@zitadel/tsconfig",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
11
packages/zitadel-tsconfig/react-library.json
Normal file
11
packages/zitadel-tsconfig/react-library.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "React Library",
|
||||
"extends": "./base.json",
|
||||
"compilerOptions": {
|
||||
"jsx": "react-jsx",
|
||||
"lib": ["dom", "ES2015"],
|
||||
"module": "ESNext",
|
||||
"target": "es6"
|
||||
}
|
||||
}
|
||||
4
packages/zitadel-utils/.eslintrc.js
Normal file
4
packages/zitadel-utils/.eslintrc.js
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: ["zitadel"],
|
||||
};
|
||||
31
packages/zitadel-utils/package.json
Normal file
31
packages/zitadel-utils/package.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "@zitadel/utils",
|
||||
"version": "0.0.0",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.mjs",
|
||||
"types": "./dist/index.d.ts",
|
||||
"sideEffects": false,
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"dist/**"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsup src/index.tsx --format esm,cjs --dts --external react",
|
||||
"dev": "tsup src/index.tsx --format esm,cjs --watch --dts --external react",
|
||||
"lint": "eslint \"src/**/*.ts*\"",
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@zitadel/tsconfig": "workspace:*",
|
||||
"@types/react": "^17.0.13",
|
||||
"@types/react-dom": "^17.0.8",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-zitadel": "workspace:*",
|
||||
"react": "^17.0.2",
|
||||
"tsup": "^5.10.1",
|
||||
"typescript": "^4.5.3"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
3
packages/zitadel-utils/src/index.tsx
Normal file
3
packages/zitadel-utils/src/index.tsx
Normal file
@@ -0,0 +1,3 @@
|
||||
export { toSlug } from "./toSlug";
|
||||
export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
|
||||
export { usePrevious } from "./usePrevious";
|
||||
18
packages/zitadel-utils/src/toSlug.ts
Normal file
18
packages/zitadel-utils/src/toSlug.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Return a slugified copy of a string.
|
||||
*
|
||||
* @param {string} str The string to be slugified
|
||||
* @return {string} The slugified string.
|
||||
*/
|
||||
export function toSlug(str: string): string {
|
||||
let s = str;
|
||||
if (!s) {
|
||||
return "";
|
||||
}
|
||||
s = s.toLowerCase().trim();
|
||||
s = s.replace(/ & /g, " and ");
|
||||
s = s.replace(/[ ]+/g, "-");
|
||||
s = s.replace(/[-]+/g, "-");
|
||||
s = s.replace(/[^a-z0-9-]+/g, "");
|
||||
return s;
|
||||
}
|
||||
13
packages/zitadel-utils/src/useIsomorphicLayoutEffect.tsx
Normal file
13
packages/zitadel-utils/src/useIsomorphicLayoutEffect.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
import * as React from "react";
|
||||
|
||||
/**
|
||||
* On the server, React emits a warning when calling `useLayoutEffect`.
|
||||
* This is because neither `useLayoutEffect` nor `useEffect` run on the server.
|
||||
* We use this safe version which suppresses the warning by replacing it with a noop on the server.
|
||||
*
|
||||
* See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect
|
||||
*/
|
||||
const useIsomorphicLayoutEffect =
|
||||
typeof window !== "undefined" ? React.useLayoutEffect : () => {};
|
||||
|
||||
export { useIsomorphicLayoutEffect };
|
||||
17
packages/zitadel-utils/src/usePrevious.tsx
Normal file
17
packages/zitadel-utils/src/usePrevious.tsx
Normal file
@@ -0,0 +1,17 @@
|
||||
import * as React from "react";
|
||||
|
||||
function usePrevious<T>(value: T) {
|
||||
// The ref object is a generic container whose current property is mutable ...
|
||||
// ... and can hold any value, similar to an instance property on a class
|
||||
const ref = React.useRef<T>(value);
|
||||
|
||||
// Store current value in ref
|
||||
React.useEffect(() => {
|
||||
ref.current = value;
|
||||
}, [value]); // Only re-run if value changes
|
||||
|
||||
// Return previous value (happens before update in useEffect above)
|
||||
return ref.current;
|
||||
}
|
||||
|
||||
export { usePrevious };
|
||||
5
packages/zitadel-utils/tsconfig.json
Normal file
5
packages/zitadel-utils/tsconfig.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": "@zitadel/tsconfig/react-library.json",
|
||||
"include": ["."],
|
||||
"exclude": ["dist", "build", "node_modules"]
|
||||
}
|
||||
3839
pnpm-lock.yaml
generated
Normal file
3839
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
3
pnpm-workspace.yaml
Normal file
3
pnpm-workspace.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
packages:
|
||||
- "apps/*"
|
||||
- "packages/*"
|
||||
22
turbo.json
Normal file
22
turbo.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "https://turbo.build/schema.json",
|
||||
"globalDependencies": ["**/.env.*local"],
|
||||
"pipeline": {
|
||||
"build": {
|
||||
"outputs": ["dist/**", ".next/**", "!.next/cache/**"],
|
||||
"dependsOn": ["^build"]
|
||||
},
|
||||
"test": {
|
||||
"outputs": ["coverage/**"],
|
||||
"dependsOn": []
|
||||
},
|
||||
"lint": {},
|
||||
"dev": {
|
||||
"cache": false,
|
||||
"persistent": true
|
||||
},
|
||||
"clean": {
|
||||
"cache": false
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user