From a961422c7125a0556b72bfa9c7eefbf137a14db1 Mon Sep 17 00:00:00 2001 From: Matt Hamlin Date: Tue, 14 May 2024 16:36:19 -0400 Subject: [PATCH] Setup --- README.md | 19 +++--- apps/docs/tsconfig.json | 24 +++++-- apps/template-app/tsconfig.json | 24 +++++-- bun.lockb | Bin 264688 -> 264672 bytes packages/one-version/CHANGELOG.md | 5 ++ packages/one-version/README.md | 59 ++++++++++++++++++ .../__tests__/one-version.test.mjs | 6 ++ packages/one-version/bin/index.mjs | 8 +++ packages/{pkg-a => one-version}/biome.jsonc | 0 packages/one-version/one-version.mjs | 4 ++ packages/{pkg-a => one-version}/package.json | 17 ++--- packages/{pkg-a => one-version}/tsconfig.json | 3 +- packages/pkg-a/.swcrc | 25 -------- packages/pkg-a/CHANGELOG.md | 5 -- packages/pkg-a/README.md | 39 ------------ packages/pkg-a/build.tsconfig.json | 11 ---- packages/pkg-a/src/__tests__/index.test.ts | 5 -- packages/pkg-a/src/index.ts | 1 - 18 files changed, 137 insertions(+), 118 deletions(-) create mode 100644 packages/one-version/CHANGELOG.md create mode 100644 packages/one-version/README.md create mode 100644 packages/one-version/__tests__/one-version.test.mjs create mode 100644 packages/one-version/bin/index.mjs rename packages/{pkg-a => one-version}/biome.jsonc (100%) create mode 100644 packages/one-version/one-version.mjs rename packages/{pkg-a => one-version}/package.json (52%) rename packages/{pkg-a => one-version}/tsconfig.json (92%) delete mode 100644 packages/pkg-a/.swcrc delete mode 100644 packages/pkg-a/CHANGELOG.md delete mode 100644 packages/pkg-a/README.md delete mode 100644 packages/pkg-a/build.tsconfig.json delete mode 100644 packages/pkg-a/src/__tests__/index.test.ts delete mode 100644 packages/pkg-a/src/index.ts diff --git a/README.md b/README.md index ff34444..38a7674 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,15 @@ -# Template monorepo +# One Version Monorepo -This is a template repo in GitHub for creating a fresh monorepo for managing code and documentation. +This repo contains the [`one-version`](./packages/one-version/README.md) library, a strict dependency conformance tool for monorepos. -For more details on this setup, refer to my blog post here: https://matthamlin.me/2024/february/library-docs-monorepo-template + -## Getting Started: - -- Use this template (see `Use this Template` button near the top right corner of the page) -- Clone the newly created repo -- Run `bun install` (if you don't have bun installed locally, refer to their [docs](https://bun.sh)) -- Start writing some code! +

+ Source +

--- -Check out the [Guidebook](./GUIDEBOOK.md) for more details on how to use this repo setup! +_Refer to the [Monorepo GUIDEBOOK.md](./GUIDEBOOK.md) for details about the repo setup and structure!_ diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json index 8606067..bd90251 100644 --- a/apps/docs/tsconfig.json +++ b/apps/docs/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,9 +22,19 @@ } ], "paths": { - "~/*": ["./*"] - } + "~/*": [ + "./*" + ] + }, + "target": "ES2017" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } diff --git a/apps/template-app/tsconfig.json b/apps/template-app/tsconfig.json index 8606067..bd90251 100644 --- a/apps/template-app/tsconfig.json +++ b/apps/template-app/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,9 +22,19 @@ } ], "paths": { - "~/*": ["./*"] - } + "~/*": [ + "./*" + ] + }, + "target": "ES2017" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } diff --git a/bun.lockb b/bun.lockb index d85bc67609b4b75e2a2cb338dc2066c58f650ec6..54bc05d3ee40f04ef6a456fc703bfc108ca8a850 100755 GIT binary patch delta 26055 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 diff --git a/packages/one-version/CHANGELOG.md b/packages/one-version/CHANGELOG.md new file mode 100644 index 0000000..1f72f53 --- /dev/null +++ b/packages/one-version/CHANGELOG.md @@ -0,0 +1,5 @@ +### Unreleased: + +### [0.0.1] - May 14th, 2024 + +- Initial release diff --git a/packages/one-version/README.md b/packages/one-version/README.md new file mode 100644 index 0000000..c3a1d94 --- /dev/null +++ b/packages/one-version/README.md @@ -0,0 +1,59 @@ +# `one-version` + +## Getting Started: + +Install `one-version` from the root of your repo (even for monorepos!): + +```bash +bun add one-version +``` + +Add a `one-version:check` script to your root `package.json`: + +```json +{ + "scripts": { + "one-version:check": "one-version check" + } +} +``` + +## Configuration: + +`one-version` can be configured using a `one-version.config.(jsonc|json)` file in the root of your repo. Here's an example: + +```jsonc +{ + // one of: "bun", "yarn-berry", "yarn", "pnpm", "npm" + // by default it will try to detect the package manager based on the presence of a lockfile + "packageManager": "bun", +} +``` + +## Inspiration: + +This is effectively a fork of the [wayfair/one-version](https://github.com/wayfair/one-version) project, which I had partially contributed to while I was at Wayfair. This fork is intended to be a slimmer re-write of the original project, aiming to support the same functionality (eventually), with also supporting `bun`! + +This tool should be a drop-in replacement for `@wayfair/one-version`, if you run into any issues or collisions, please open an issue! + +## Contributing: + +This library does not have a build step currently. + +### Code Quality: + +#### Type Checking: + +This library uses TypeScript to perform type checks, run `bun run type-check` from the root or from this workspace! + +#### Linting + +This library uses [BiomeJS](https://biomejs.dev/) for linting, run `bun run lint` from the root or from this workspace! + +#### Tests + +This library uses Node.js for running unit tests, run `bun run test` from the root or from this workspace! + +### Publishing: + +To publish the library, run `bun run pub` from the workspace root. This will prompt you to login to npm and publish the package. diff --git a/packages/one-version/__tests__/one-version.test.mjs b/packages/one-version/__tests__/one-version.test.mjs new file mode 100644 index 0000000..28afce7 --- /dev/null +++ b/packages/one-version/__tests__/one-version.test.mjs @@ -0,0 +1,6 @@ +import assert from "node:assert"; +import { after, before, test } from "node:test"; + +test("stub", () => { + assert.ok(true); +}); diff --git a/packages/one-version/bin/index.mjs b/packages/one-version/bin/index.mjs new file mode 100644 index 0000000..37f2c97 --- /dev/null +++ b/packages/one-version/bin/index.mjs @@ -0,0 +1,8 @@ +#!/usr/bin/env node +import { start } from "../one-version.mjs"; + +start({ rootDirectory: process.cwd(), logger: console }).catch((e) => { + console.error("Error running one-version:"); + console.error(e); + process.exit(1); +}); diff --git a/packages/pkg-a/biome.jsonc b/packages/one-version/biome.jsonc similarity index 100% rename from packages/pkg-a/biome.jsonc rename to packages/one-version/biome.jsonc diff --git a/packages/one-version/one-version.mjs b/packages/one-version/one-version.mjs new file mode 100644 index 0000000..70db470 --- /dev/null +++ b/packages/one-version/one-version.mjs @@ -0,0 +1,4 @@ +export async function start({ rootDirectory, logger }) { + logger.log(`Running one-version in ${rootDirectory}`); + return Promise.resolve(); +} diff --git a/packages/pkg-a/package.json b/packages/one-version/package.json similarity index 52% rename from packages/pkg-a/package.json rename to packages/one-version/package.json index 9da7160..1eaaffd 100644 --- a/packages/pkg-a/package.json +++ b/packages/one-version/package.json @@ -1,12 +1,8 @@ { - "name": "pkg-a", + "name": "one-version", "version": "0.0.1", - "module": "index.ts", - "exports": { - ".": { - "import": "./dist/index.js", - "types": "./dist/index.d.ts" - } + "bin": { + "one-version": "./bin/index.mjs" }, "type": "module", "devDependencies": { @@ -18,11 +14,10 @@ "typescript": "5.4.5" }, "scripts": { - "build": "hohoro", "type-check": "tsc -p ./tsconfig.json", - "lint": "biome lint ./src/", - "test": "bun test", - "prepub": "bun run build && bun run type-check && bun run lint && bun run test", + "lint": "biome lint ./", + "test": "node --test", + "prepub": "bun run type-check && bun run lint && bun run test", "pub": "npm publish --access public" } } diff --git a/packages/pkg-a/tsconfig.json b/packages/one-version/tsconfig.json similarity index 92% rename from packages/pkg-a/tsconfig.json rename to packages/one-version/tsconfig.json index 59116c2..7733731 100644 --- a/packages/pkg-a/tsconfig.json +++ b/packages/one-version/tsconfig.json @@ -19,5 +19,6 @@ "strict": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true - } + }, + "include": ["./one-version.mjs"] } diff --git a/packages/pkg-a/.swcrc b/packages/pkg-a/.swcrc deleted file mode 100644 index 6fe78e4..0000000 --- a/packages/pkg-a/.swcrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/swcrc", - "jsc": { - "parser": { - "syntax": "ecmascript", - "jsx": false, - "dynamicImport": false, - "privateMethod": false, - "functionBind": false, - "exportDefaultFrom": false, - "exportNamespaceFrom": false, - "decorators": false, - "decoratorsBeforeExport": false, - "topLevelAwait": false, - "importMeta": false - }, - "transform": null, - "target": "es5", - "loose": false, - "externalHelpers": false, - // Requires v1.2.50 or upper and requires target to be es2016 or upper. - "keepClassNames": false - }, - "minify": false -} diff --git a/packages/pkg-a/CHANGELOG.md b/packages/pkg-a/CHANGELOG.md deleted file mode 100644 index e8b5ca1..0000000 --- a/packages/pkg-a/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -### Unreleased: - -### [0.0.1] - March 3rd, 2024 - -- Build the library using SWC and TypeScript diff --git a/packages/pkg-a/README.md b/packages/pkg-a/README.md deleted file mode 100644 index 1117d8d..0000000 --- a/packages/pkg-a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# `pkg-a` - -To install dependencies: - -```bash -bun install -``` - -To run: - -```bash -bun run ./src/index.ts -``` - -## Building: - -This library uses [`swc`](https://swc.rs/) and [`TypeScript`](https://www.typescriptlang.org/docs/) to build the source code and generate types. - -To build the library, run `bun run build` from the root, or from this workspace! - -## Code Quality: - -### Type Checking: - -This library uses TypeScript to perform type checks, run `bun run type-check` from the root or from this workspace! - -### Linting - -This library uses [BiomeJS](https://biomejs.dev/) for linting, run `bun run lint` from the root or from this workspace! - -### Tests - -This library uses Bun for running unit tests, run `bun run test` from the root or from this workspace! - -## Publishing: - -To publish the library, run `bun run pub` from the workspace root. This will prompt you to login to npm and publish the package. - -> Note: In the future, we will automate this process using GitHub Actions. And also add in tooling to manage releases / changelogs! diff --git a/packages/pkg-a/build.tsconfig.json b/packages/pkg-a/build.tsconfig.json deleted file mode 100644 index c4d0196..0000000 --- a/packages/pkg-a/build.tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./tsconfig.json", - "compilerOptions": { - "emitDeclarationOnly": true, - "declaration": true, - "noEmit": false, - "rootDir": "./src", - "outDir": "./dist" - } -} diff --git a/packages/pkg-a/src/__tests__/index.test.ts b/packages/pkg-a/src/__tests__/index.test.ts deleted file mode 100644 index 2df36ea..0000000 --- a/packages/pkg-a/src/__tests__/index.test.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { expect, test } from "bun:test"; - -test("pkg-a", () => { - expect("pkg-a").toBe("pkg-a"); -}); diff --git a/packages/pkg-a/src/index.ts b/packages/pkg-a/src/index.ts deleted file mode 100644 index 2a5e4b8..0000000 --- a/packages/pkg-a/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -console.log("Hello via Bun!");