├── .gitignore ├── README.md ├── lerna.json ├── package.json ├── packages ├── common │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json └── server │ ├── package.json │ ├── src │ └── index.ts │ └── tsconfig.json ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # typescript-yarn-workspace-example 2 | 3 | ## Watch how this was made: 4 | 5 | This branch: https://youtu.be/EoqzOEZIzhg 6 | 7 | Entire playlist: https://www.youtube.com/playlist?list=PLN3n1USn4xll1d97ZtIk2t7UpSxWGdIn5 8 | 9 | ## Running 10 | 11 | ``` 12 | git clone https://github.com/benawad/typescript-yarn-workspace-example.git 13 | cd typescript-yarn-workspace-example 14 | yarn install 15 | cd packages/common 16 | yarn build 17 | cd ../server 18 | yarn add express 19 | yarn add -D @types/express 20 | yarn build 21 | ``` 22 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "lerna": "2.11.0", 3 | "packages": ["packages/*"], 4 | "version": "0.0.0", 5 | "npmClient": "yarn", 6 | "useWorkspaces": true 7 | } 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "workspaces": [ 4 | "packages/*" 5 | ], 6 | "scripts": { 7 | "build": "lerna run build" 8 | }, 9 | "devDependencies": { 10 | "lerna": "^2.11.0" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/common/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@cashew/common", 3 | "version": "1.0.0", 4 | "main": "dist/index.js", 5 | "typings": "dist/index.d.ts", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "@types/node": "^10.3.2", 9 | "typescript": "^2.9.1" 10 | }, 11 | "scripts": { 12 | "build": "tsc", 13 | "build:watch": "tsc --watch" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/common/src/index.ts: -------------------------------------------------------------------------------- 1 | export const add = (a: number, b: number) => a + b; 2 | -------------------------------------------------------------------------------- /packages/common/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "target": "es6", 5 | "module": "commonjs", 6 | "moduleResolution": "node", 7 | "rootDir": "src", 8 | "outDir": "dist", 9 | "declaration": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@cashew/server", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@cashew/common": "1.0.0" 8 | }, 9 | "devDependencies": { 10 | "@types/node": "^10.3.2", 11 | "ts-node": "^6.1.0", 12 | "typescript": "^2.9.1" 13 | }, 14 | "scripts": { 15 | "start": "ts-node src/index.ts", 16 | "build": "tsc" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/server/src/index.ts: -------------------------------------------------------------------------------- 1 | import { add } from "@cashew/common"; 2 | 3 | console.log(add(1, 2)); 4 | -------------------------------------------------------------------------------- /packages/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "target": "es6", 5 | "module": "commonjs", 6 | "moduleResolution": "node", 7 | "rootDir": "src", 8 | "outDir": "dist", 9 | "declaration": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "sourceMap": true, 4 | "removeComments": true, 5 | 6 | "strict": true, 7 | "noImplicitAny": true, 8 | "strictNullChecks": true, 9 | "strictFunctionTypes": true, 10 | "noImplicitThis": true, 11 | "alwaysStrict": true, 12 | 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "noImplicitReturns": true, 16 | "noFallthroughCasesInSwitch": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/node@^10.3.2": 6 | version "10.3.2" 7 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.2.tgz#3840ec6c12556fdda6e0e6d036df853101d732a4" 8 | 9 | arrify@^1.0.0: 10 | version "1.0.1" 11 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 12 | 13 | buffer-from@^1.0.0: 14 | version "1.1.0" 15 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" 16 | 17 | diff@^3.1.0: 18 | version "3.5.0" 19 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 20 | 21 | make-error@^1.1.1: 22 | version "1.3.4" 23 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" 24 | 25 | minimist@0.0.8: 26 | version "0.0.8" 27 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 28 | 29 | minimist@^1.2.0: 30 | version "1.2.0" 31 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 32 | 33 | mkdirp@^0.5.1: 34 | version "0.5.1" 35 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 36 | dependencies: 37 | minimist "0.0.8" 38 | 39 | source-map-support@^0.5.6: 40 | version "0.5.6" 41 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" 42 | dependencies: 43 | buffer-from "^1.0.0" 44 | source-map "^0.6.0" 45 | 46 | source-map@^0.6.0: 47 | version "0.6.1" 48 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 49 | 50 | ts-node@^6.1.0: 51 | version "6.1.0" 52 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-6.1.0.tgz#a2c37a11fdb58e60eca887a1269b025cf4d2f8b8" 53 | dependencies: 54 | arrify "^1.0.0" 55 | diff "^3.1.0" 56 | make-error "^1.1.1" 57 | minimist "^1.2.0" 58 | mkdirp "^0.5.1" 59 | source-map-support "^0.5.6" 60 | yn "^2.0.0" 61 | 62 | typescript@^2.9.1: 63 | version "2.9.1" 64 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" 65 | 66 | yn@^2.0.0: 67 | version "2.0.0" 68 | resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" 69 | --------------------------------------------------------------------------------