From 3f3904ce49797e71e47334321dea2c9890687a9a Mon Sep 17 00:00:00 2001 From: Jared Palmer Date: Tue, 14 Dec 2021 12:01:42 -0500 Subject: [PATCH] Add design system example --- examples/design-system/.gitignore | 13 ++++ examples/design-system/.prettierignore | 9 +++ examples/design-system/.prettierrc | 4 ++ examples/design-system/README.md | 63 +++++++++++++++++++ examples/design-system/apps/docs/.eslintrc.js | 1 + .../design-system/apps/docs/next-env.d.ts | 5 ++ .../design-system/apps/docs/next.config.js | 3 + examples/design-system/apps/docs/package.json | 26 ++++++++ .../apps/docs/src/pages/index.tsx | 14 +++++ .../design-system/apps/docs/tsconfig.json | 10 +++ examples/design-system/package.json | 46 ++++++++++++++ .../packages/acme-core/.eslintrc.js | 1 + .../packages/acme-core/package.json | 30 +++++++++ .../packages/acme-core/src/Button.tsx | 11 ++++ .../packages/acme-core/src/index.tsx | 23 +++++++ .../packages/acme-core/tsconfig.json | 13 ++++ .../packages/acme-tsconfig/README.md | 3 + .../packages/acme-tsconfig/base.json | 19 ++++++ .../packages/acme-tsconfig/nextjs.json | 21 +++++++ .../packages/acme-tsconfig/node14.json | 14 +++++ .../packages/acme-tsconfig/package.json | 15 +++++ .../packages/acme-tsconfig/react-library.json | 14 +++++ .../packages/acme-utils/.eslintrc.js | 1 + .../packages/acme-utils/package.json | 30 +++++++++ .../packages/acme-utils/src/index.tsx | 3 + .../packages/acme-utils/src/toSlug.ts | 18 ++++++ .../src/useIsomorphicLayoutEffect.tsx | 14 +++++ .../packages/acme-utils/src/usePrevious.tsx | 17 +++++ .../packages/acme-utils/tsconfig.json | 13 ++++ .../packages/eslint-preset-acme/README.md | 3 + .../packages/eslint-preset-acme/index.js | 8 +++ .../packages/eslint-preset-acme/package.json | 13 ++++ 32 files changed, 478 insertions(+) create mode 100644 examples/design-system/.gitignore create mode 100644 examples/design-system/.prettierignore create mode 100644 examples/design-system/.prettierrc create mode 100644 examples/design-system/README.md create mode 100644 examples/design-system/apps/docs/.eslintrc.js create mode 100644 examples/design-system/apps/docs/next-env.d.ts create mode 100644 examples/design-system/apps/docs/next.config.js create mode 100644 examples/design-system/apps/docs/package.json create mode 100644 examples/design-system/apps/docs/src/pages/index.tsx create mode 100644 examples/design-system/apps/docs/tsconfig.json create mode 100755 examples/design-system/package.json create mode 100644 examples/design-system/packages/acme-core/.eslintrc.js create mode 100644 examples/design-system/packages/acme-core/package.json create mode 100644 examples/design-system/packages/acme-core/src/Button.tsx create mode 100644 examples/design-system/packages/acme-core/src/index.tsx create mode 100644 examples/design-system/packages/acme-core/tsconfig.json create mode 100644 examples/design-system/packages/acme-tsconfig/README.md create mode 100644 examples/design-system/packages/acme-tsconfig/base.json create mode 100644 examples/design-system/packages/acme-tsconfig/nextjs.json create mode 100644 examples/design-system/packages/acme-tsconfig/node14.json create mode 100644 examples/design-system/packages/acme-tsconfig/package.json create mode 100644 examples/design-system/packages/acme-tsconfig/react-library.json create mode 100644 examples/design-system/packages/acme-utils/.eslintrc.js create mode 100644 examples/design-system/packages/acme-utils/package.json create mode 100644 examples/design-system/packages/acme-utils/src/index.tsx create mode 100644 examples/design-system/packages/acme-utils/src/toSlug.ts create mode 100644 examples/design-system/packages/acme-utils/src/useIsomorphicLayoutEffect.tsx create mode 100644 examples/design-system/packages/acme-utils/src/usePrevious.tsx create mode 100644 examples/design-system/packages/acme-utils/tsconfig.json create mode 100644 examples/design-system/packages/eslint-preset-acme/README.md create mode 100644 examples/design-system/packages/eslint-preset-acme/index.js create mode 100644 examples/design-system/packages/eslint-preset-acme/package.json diff --git a/examples/design-system/.gitignore b/examples/design-system/.gitignore new file mode 100644 index 0000000000000..e741956869dcb --- /dev/null +++ b/examples/design-system/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +.turbo +*.log +.next +dist +dist-ssr +*.local +.env +.cache +server/dist +public/dist +.turbo \ No newline at end of file diff --git a/examples/design-system/.prettierignore b/examples/design-system/.prettierignore new file mode 100644 index 0000000000000..e428cb710ed5f --- /dev/null +++ b/examples/design-system/.prettierignore @@ -0,0 +1,9 @@ +node_modules +.next +build +dist +*.tsbuildinfo +*.gitignore +*.svg +*.lock +*.npmignore \ No newline at end of file diff --git a/examples/design-system/.prettierrc b/examples/design-system/.prettierrc new file mode 100644 index 0000000000000..dc6958febb993 --- /dev/null +++ b/examples/design-system/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": false, + "semi": true +} diff --git a/examples/design-system/README.md b/examples/design-system/README.md new file mode 100644 index 0000000000000..714fd8c376260 --- /dev/null +++ b/examples/design-system/README.md @@ -0,0 +1,63 @@ +# Turborepo Design System starter + +This is an official React design system starter powered by Turborepo. + +## What's inside? + +This Turborepo includes the following packages and apps: + +### Apps and Packages + +- `docs`: A placeholder documentation site powered by [Next.js](https://nextjs.org) +- `@acme/core`: core React components +- `@acme/utils`: shared React utilities +- `@acme/tsconfig`: shared `tsconfig.json`s used throughout the monorepo +- `eslint-preset-acme`: ESLint preset + +Each package and app is 100% [Typescript](https://www.typescriptlang.org/). + +### Utilities + +This turborepo has some additional tools already setup for you: + +- [Typescript](https://www.typescriptlang.org/) for static type checking +- [ESLint](https://eslint.org/) for code linting +- [Jest](https://jestjs.io) test runner for all things JavaScript +- [Prettier](https://prettier.io) for code formatting + +## Using this example + +We do not have a starter yet in `create-turbo` for this quite yet. If you want to use this in the interim, you run the following command: + +```sh +npx degit vercel/turborepo/examples/design-system design-system +cd design-system +git init . && git add . && git commit -m "Init" +yarn install +``` + +### Changing the NPM organization scope + +The NPM organization scope for this design system starter is `@acme`. To change this, it's a bit manual at the moment, but you'll need to do the following: + +- Rename folders in `packages/*` to replace `acme` with your desired scope +- Search and replace `acme` with your desired scope +- Re-run `yarn install` + +### Publishing packages + +#### NPM + +If you want to publish package to the public NPM registry and make them publicly available, this is already setup for you. + +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) diff --git a/examples/design-system/apps/docs/.eslintrc.js b/examples/design-system/apps/docs/.eslintrc.js new file mode 100644 index 0000000000000..a757b5e9cde84 --- /dev/null +++ b/examples/design-system/apps/docs/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require("eslint-preset-acme"); diff --git a/examples/design-system/apps/docs/next-env.d.ts b/examples/design-system/apps/docs/next-env.d.ts new file mode 100644 index 0000000000000..4f11a03dc6cc3 --- /dev/null +++ b/examples/design-system/apps/docs/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/design-system/apps/docs/next.config.js b/examples/design-system/apps/docs/next.config.js new file mode 100644 index 0000000000000..da1bb770fb8e6 --- /dev/null +++ b/examples/design-system/apps/docs/next.config.js @@ -0,0 +1,3 @@ +module.exports = { + reactStrictMode: true, +}; diff --git a/examples/design-system/apps/docs/package.json b/examples/design-system/apps/docs/package.json new file mode 100644 index 0000000000000..3edb20191abbf --- /dev/null +++ b/examples/design-system/apps/docs/package.json @@ -0,0 +1,26 @@ +{ + "name": "@acme/docs", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "next build", + "start": "next start ", + "dev": "next dev -p 3002", + "lint": "TIMING=1 next lint", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next" + }, + "dependencies": { + "@acme/core": "*", + "@acme/utils": "*", + "next": "^12.0.7", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@acme/tsconfig": "*", + "@types/react": "^17.0.37", + "@types/react-dom": "^17.0.11", + "eslint-preset-acme": "*", + "typescript": "^4.5.4" + } +} diff --git a/examples/design-system/apps/docs/src/pages/index.tsx b/examples/design-system/apps/docs/src/pages/index.tsx new file mode 100644 index 0000000000000..2c833f2b9f50d --- /dev/null +++ b/examples/design-system/apps/docs/src/pages/index.tsx @@ -0,0 +1,14 @@ +import { Button } from "@acme/core"; +import { useIsomorphicLayoutEffect } from "@acme/utils"; + +export default function Docs() { + useIsomorphicLayoutEffect(() => { + console.log("Acme docs page"); + }, []); + return ( +
+

Acme Documentation

+
+ ); +} diff --git a/examples/design-system/apps/docs/tsconfig.json b/examples/design-system/apps/docs/tsconfig.json new file mode 100644 index 0000000000000..51391299700ed --- /dev/null +++ b/examples/design-system/apps/docs/tsconfig.json @@ -0,0 +1,10 @@ +{ + "exclude": ["node_modules"], + "extends": "@acme/tsconfig/nextjs.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "incremental": true + }, + "include": ["src", "next-env.d.ts"] +} diff --git a/examples/design-system/package.json b/examples/design-system/package.json new file mode 100755 index 0000000000000..2c7378d07933e --- /dev/null +++ b/examples/design-system/package.json @@ -0,0 +1,46 @@ +{ + "name": "turborepo-design-system", + "version": "0.0.0", + "private": true, + "workspaces": [ + "packages/*", + "apps/*" + ], + "scripts": { + "build": "turbo run build", + "dev": "turbo run dev --no-cache --parallel --continue", + "lint": "turbo run lint", + "test": "turbo run test", + "clean": "turbo run clean && rm -rf node_modules" + }, + "devDependencies": { + "eslint": "^8.4.1", + "prettier": "^2.5.1", + "turbo": "latest" + }, + "turbo": { + "pipeline": { + "build": { + "outputs": [ + "dist/**", + ".next/**" + ], + "dependsOn": [ + "^build" + ] + }, + "test": { + "outputs": [ + "coverage/**" + ], + "dependsOn": [] + }, + "lint": { + "outputs": [] + }, + "dev": { + "cache": false + } + } + } +} diff --git a/examples/design-system/packages/acme-core/.eslintrc.js b/examples/design-system/packages/acme-core/.eslintrc.js new file mode 100644 index 0000000000000..a757b5e9cde84 --- /dev/null +++ b/examples/design-system/packages/acme-core/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require("eslint-preset-acme"); diff --git a/examples/design-system/packages/acme-core/package.json b/examples/design-system/packages/acme-core/package.json new file mode 100644 index 0000000000000..c9ff1224a3f12 --- /dev/null +++ b/examples/design-system/packages/acme-core/package.json @@ -0,0 +1,30 @@ +{ + "name": "@acme/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": "TIMING=1 eslint src --fix", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "devDependencies": { + "@acme/tsconfig": "*", + "eslint-preset-acme": "*", + "@types/react": "^17.0.13", + "@types/react-dom": "^17.0.8", + "react": "^17.0.2", + "tsup": "^5.10.1", + "typescript": "^4.2.4" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/examples/design-system/packages/acme-core/src/Button.tsx b/examples/design-system/packages/acme-core/src/Button.tsx new file mode 100644 index 0000000000000..fbd6ee08d5f87 --- /dev/null +++ b/examples/design-system/packages/acme-core/src/Button.tsx @@ -0,0 +1,11 @@ +import * as React from "react"; + +export interface ButtonProps { + children: React.ReactNode; +} + +export function Button(props: ButtonProps) { + return ; +} + +Button.displayName = "Button"; diff --git a/examples/design-system/packages/acme-core/src/index.tsx b/examples/design-system/packages/acme-core/src/index.tsx new file mode 100644 index 0000000000000..b6d24c8f24f9a --- /dev/null +++ b/examples/design-system/packages/acme-core/src/index.tsx @@ -0,0 +1,23 @@ +import * as React from "react"; + +export const Button = () => { + const [count, setCount] = React.useState(0); + return ( +
+

+ This is component iadasdfsdfdffsfsds from ui +

+

+ +

+
+ ); +}; diff --git a/examples/design-system/packages/acme-core/tsconfig.json b/examples/design-system/packages/acme-core/tsconfig.json new file mode 100644 index 0000000000000..cb84daf94c4c3 --- /dev/null +++ b/examples/design-system/packages/acme-core/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "lib": ["ES2015", "DOM"], + "target": "ES6", + "module": "ESNext", + "outDir": "./dist", + "rootDir": "./src" + }, + "exclude": ["node_modules", "src/__test__/**/*"], + "extends": "@acme/tsconfig/react-library.json", + "include": ["src"] +} diff --git a/examples/design-system/packages/acme-tsconfig/README.md b/examples/design-system/packages/acme-tsconfig/README.md new file mode 100644 index 0000000000000..ad972d4ca8d49 --- /dev/null +++ b/examples/design-system/packages/acme-tsconfig/README.md @@ -0,0 +1,3 @@ +# `tsconfig` + +This is the Turborepo shared `tsconfig.json` from which all sother `tsconfig.json`'s inherit from. Making changes to this may have unintended consequences. diff --git a/examples/design-system/packages/acme-tsconfig/base.json b/examples/design-system/packages/acme-tsconfig/base.json new file mode 100644 index 0000000000000..5b57072b63c0e --- /dev/null +++ b/examples/design-system/packages/acme-tsconfig/base.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSources": false, + "isolatedModules": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true + }, + "exclude": ["node_modules"] +} diff --git a/examples/design-system/packages/acme-tsconfig/nextjs.json b/examples/design-system/packages/acme-tsconfig/nextjs.json new file mode 100644 index 0000000000000..a6ebb946159f4 --- /dev/null +++ b/examples/design-system/packages/acme-tsconfig/nextjs.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "extends": "./base.json", + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "noEmit": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "incremental": true, + "jsx": "preserve", + "rootDir": "src" + }, + "include": ["src", "next-env.d.ts"], + "exclude": ["node_modules"] +} diff --git a/examples/design-system/packages/acme-tsconfig/node14.json b/examples/design-system/packages/acme-tsconfig/node14.json new file mode 100644 index 0000000000000..3f5f130f25094 --- /dev/null +++ b/examples/design-system/packages/acme-tsconfig/node14.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Node 14", + "extends": "./base.json", + "compilerOptions": { + "lib": ["es2020"], + "module": "commonjs", + "target": "es2020", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/examples/design-system/packages/acme-tsconfig/package.json b/examples/design-system/packages/acme-tsconfig/package.json new file mode 100644 index 0000000000000..9ad6d33679d25 --- /dev/null +++ b/examples/design-system/packages/acme-tsconfig/package.json @@ -0,0 +1,15 @@ +{ + "name": "@acme/tsconfig", + "version": "0.0.0", + "license": "MIT", + "main": "index.js", + "files": [ + "base.json", + "node14.json", + "nextjs.json", + "react-library.json" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/examples/design-system/packages/acme-tsconfig/react-library.json b/examples/design-system/packages/acme-tsconfig/react-library.json new file mode 100644 index 0000000000000..7c2ece9d1625c --- /dev/null +++ b/examples/design-system/packages/acme-tsconfig/react-library.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "React Library", + "extends": "./base.json", + "include": ["src"], + "exclude": ["node_modules"], + "compilerOptions": { + "lib": ["ES2015"], + "module": "ESNext", + "rootDir": "src", + "outDir": "dist", + "jsx": "react" + } +} diff --git a/examples/design-system/packages/acme-utils/.eslintrc.js b/examples/design-system/packages/acme-utils/.eslintrc.js new file mode 100644 index 0000000000000..a757b5e9cde84 --- /dev/null +++ b/examples/design-system/packages/acme-utils/.eslintrc.js @@ -0,0 +1 @@ +module.exports = require("eslint-preset-acme"); diff --git a/examples/design-system/packages/acme-utils/package.json b/examples/design-system/packages/acme-utils/package.json new file mode 100644 index 0000000000000..1e75f92e3f7f2 --- /dev/null +++ b/examples/design-system/packages/acme-utils/package.json @@ -0,0 +1,30 @@ +{ + "name": "@acme/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": "TIMING=1 eslint src --fix", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "devDependencies": { + "@acme/tsconfig": "*", + "@types/react": "^17.0.13", + "@types/react-dom": "^17.0.8", + "eslint-preset-acme": "*", + "react": "^17.0.2", + "tsup": "^5.10.1", + "typescript": "^4.2.4" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/examples/design-system/packages/acme-utils/src/index.tsx b/examples/design-system/packages/acme-utils/src/index.tsx new file mode 100644 index 0000000000000..6098c1fab74bb --- /dev/null +++ b/examples/design-system/packages/acme-utils/src/index.tsx @@ -0,0 +1,3 @@ +export { toSlug } from "./toSlug"; +export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect"; +export { usePrevious } from "./usePrevious"; diff --git a/examples/design-system/packages/acme-utils/src/toSlug.ts b/examples/design-system/packages/acme-utils/src/toSlug.ts new file mode 100644 index 0000000000000..6aec61c6a9960 --- /dev/null +++ b/examples/design-system/packages/acme-utils/src/toSlug.ts @@ -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; +} diff --git a/examples/design-system/packages/acme-utils/src/useIsomorphicLayoutEffect.tsx b/examples/design-system/packages/acme-utils/src/useIsomorphicLayoutEffect.tsx new file mode 100644 index 0000000000000..9a1768c57437a --- /dev/null +++ b/examples/design-system/packages/acme-utils/src/useIsomorphicLayoutEffect.tsx @@ -0,0 +1,14 @@ +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 = Boolean(globalThis?.document) + ? React.useLayoutEffect + : () => {}; + +export { useIsomorphicLayoutEffect }; diff --git a/examples/design-system/packages/acme-utils/src/usePrevious.tsx b/examples/design-system/packages/acme-utils/src/usePrevious.tsx new file mode 100644 index 0000000000000..8024464562fdd --- /dev/null +++ b/examples/design-system/packages/acme-utils/src/usePrevious.tsx @@ -0,0 +1,17 @@ +import * as React from "react"; + +function usePrevious(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(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 }; diff --git a/examples/design-system/packages/acme-utils/tsconfig.json b/examples/design-system/packages/acme-utils/tsconfig.json new file mode 100644 index 0000000000000..b8d54d59364c6 --- /dev/null +++ b/examples/design-system/packages/acme-utils/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "lib": ["ES2015", "DOM"], + "target": "ES6", + "module": "ESNext", + "outDir": "./dist", + "rootDir": "./src" + }, + "exclude": ["node_modules", "src/__test__/**/*"], + "extends": "@acme/tsconfig/base.json", + "include": ["src"] +} diff --git a/examples/design-system/packages/eslint-preset-acme/README.md b/examples/design-system/packages/eslint-preset-acme/README.md new file mode 100644 index 0000000000000..14ac5c0fbd05c --- /dev/null +++ b/examples/design-system/packages/eslint-preset-acme/README.md @@ -0,0 +1,3 @@ +# `scripts` + +These are internal repo scripts for Turborepo until we can fully self-compile. diff --git a/examples/design-system/packages/eslint-preset-acme/index.js b/examples/design-system/packages/eslint-preset-acme/index.js new file mode 100644 index 0000000000000..79dd880a4663c --- /dev/null +++ b/examples/design-system/packages/eslint-preset-acme/index.js @@ -0,0 +1,8 @@ +module.exports = { + extends: ["next", "prettier"], + settings: { + next: { + rootDir: ["./apps/*/", "./packages/*/"], + }, + }, +}; diff --git a/examples/design-system/packages/eslint-preset-acme/package.json b/examples/design-system/packages/eslint-preset-acme/package.json new file mode 100644 index 0000000000000..6a6dfea83f2cf --- /dev/null +++ b/examples/design-system/packages/eslint-preset-acme/package.json @@ -0,0 +1,13 @@ +{ + "name": "eslint-preset-acme", + "version": "0.0.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "eslint-config-next": "^12.0.7", + "eslint-config-prettier": "^8.3.0" + }, + "publishConfig": { + "access": "public" + } +}