Skip to content

Commit

Permalink
feat(core): split project into multiple packages (#475)
Browse files Browse the repository at this point in the history
This allows to have lighter production builds (e.g. do not ship ts-morph or knex when not used).

Available packages:
- `@mikro-orm/core`
- `@mikro-orm/reflection` - `TsMorphMetadataProvider`
- `@mikro-orm/cli` - CLI support
- `@mikro-orm/knex` - SQL support
- `@mikro-orm/entity-generator`
- `@mikro-orm/migrations`
- `@mikro-orm/mysql`
- `@mikro-orm/mariadb`
- `@mikro-orm/mysql-base`
- `@mikro-orm/sqlite`
- `@mikro-orm/postgresql`
- `@mikro-orm/mongodb`

For easier transition, meta package `mikro-orm` is still present, reexporting `core`, `reflection` and `cli` packages.

BREAKING CHANGE:
Some parts of the ORM now resides under their own packages.
Default metadata provider has been changed to `ReflectMetadataProvider`.
  • Loading branch information
B4nan committed Aug 2, 2020
1 parent f3b4ae2 commit c886414
Show file tree
Hide file tree
Showing 359 changed files with 5,273 additions and 1,822 deletions.
3 changes: 2 additions & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module.exports = {
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
ignorePatterns: ['node_modules', 'dist', 'coverage', 'tests', '**/*.js'],
ignorePatterns: ['node_modules', 'dist', 'coverage', '**/*.js'],
parser: '@typescript-eslint/parser',
parserOptions: {
'project': 'tsconfig.json',
Expand All @@ -21,6 +21,7 @@ module.exports = {
'jsdoc',
],
rules: {
'@typescript-eslint/prefer-optional-chain': 'error',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
Expand Down
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/node_modules
/dist
**/node_modules
**/dist
/data
/coverage
/temp
Expand All @@ -10,3 +10,5 @@
/.coveralls.yml
!.gitkeep
/mikro_orm_test.db
*.tsbuildinfo
.DS_Store
10 changes: 0 additions & 10 deletions .npmignore

This file was deleted.

8 changes: 8 additions & 0 deletions docs/docs/upgrading-v3-to-v4.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,11 @@ Support for older node versions was dropped.
## TypeScript 3.7+ required

Support for older TypeScript versions was dropped.

## Monorepo

TODO multiple packages

## SqlEntityManager and MongoEntityManager

TODO QB getter, knex getter, aggregate...
17 changes: 17 additions & 0 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"packages": ["packages/*"],
"version": "4.0.0-alpha.0",
"command": {
"version": {
"conventionalCommits": true,
"createRelease": "github",
"message": "chore(release): %s"
}
},
"ignoreChanges": [
"**/tests/**",
"**/*.md"
],
"npmClient": "yarn",
"useWorkspaces": true
}
2 changes: 0 additions & 2 deletions lib/connections/index.ts

This file was deleted.

12 changes: 0 additions & 12 deletions lib/drivers/MariaDbDriver.ts

This file was deleted.

12 changes: 0 additions & 12 deletions lib/drivers/MySqlDriver.ts

This file was deleted.

12 changes: 0 additions & 12 deletions lib/drivers/PostgreSqlDriver.ts

This file was deleted.

12 changes: 0 additions & 12 deletions lib/drivers/SqliteDriver.ts

This file was deleted.

4 changes: 0 additions & 4 deletions lib/drivers/index.ts

This file was deleted.

12 changes: 0 additions & 12 deletions lib/platforms/MySqlPlatform.ts
Original file line number Diff line number Diff line change
@@ -1,12 +0,0 @@
import { Platform } from './Platform';
import { MySqlSchemaHelper } from '../schema/MySqlSchemaHelper';

export class MySqlPlatform extends Platform {

protected readonly schemaHelper = new MySqlSchemaHelper();

getDefaultCharset(): string {
return 'utf8mb4';
}

}
80 changes: 22 additions & 58 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"name": "mikro-orm",
"private": true,
"workspaces": [
"packages/*"
],
"version": "4.0.0-alpha.0",
"description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
"main": "dist/index.js",
Expand Down Expand Up @@ -35,7 +39,11 @@
},
"homepage": "https://mikro-orm.io",
"scripts": {
"build": "rimraf dist && tsc",
"bootstrap": "lerna bootstrap",
"postinstall": "yarn bootstrap",
"clean": "lerna run clean",
"build": "lerna run build",
"pub": "lerna publish",
"pretest": "node tests/pre-test",
"test": "node --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage",
"posttest": "node tests/post-test",
Expand All @@ -44,20 +52,20 @@
"coveralls": "cat ./coverage/lcov.info | coveralls",
"run-rs": "run-rs -v 4.2.3 -l ubuntu1804",
"run-rs-in-background": "yarn run-rs > /dev/null 2>&1 &",
"lint": "eslint lib/**/*.ts"
},
"bin": {
"mikro-orm": "./dist/cli.js"
"lint": "eslint packages/**/*.ts"
},
"jest": {
"testTimeout": 30000,
"preset": "ts-jest",
"collectCoverage": false,
"collectCoverageFrom": [
"lib/**/*.ts"
"<rootDir>/packages/*/src/**/*.ts"
],
"moduleNameMapper": {
"@mikro-orm/(.*)": "<rootDir>/packages/$1/src"
},
"coveragePathIgnorePatterns": [
"lib/cli.ts"
"<rootDir>/packages/cli/src/cli.ts"
]
},
"commitlint": {
Expand All @@ -73,7 +81,7 @@
},
"lint-staged": {
"*.ts": [
"eslint lib/**/*.ts --fix",
"eslint packages/**/*.ts --fix",
"git add"
]
},
Expand All @@ -86,56 +94,15 @@
"engines": {
"node": ">= 10.13.0"
},
"dependencies": {
"acorn-loose": "^7.0.0",
"acorn-walk": "^7.1.1",
"chalk": "^4.0.0",
"cli-highlight": "^2.1.4",
"cli-table3": "^0.6.0",
"clone": "^2.1.2",
"fast-deep-equal": "^3.1.1",
"fs-extra": "^9.0.0",
"globby": "^11.0.0",
"knex": "^0.20.13",
"reflect-metadata": "^0.1.13",
"ts-morph": "^7.0.0",
"umzug": "^2.2.0",
"uuid": "^8.0.0",
"yargonaut": "^1.1.4",
"yargs": "^15.3.1"
},
"peerDependencies": {
"mariadb": "^2.1.0",
"mongodb": "^3.3.4",
"mysql2": "^2.0.0",
"pg": "^7.10.0",
"sqlite3": "^4.0.0"
},
"peerDependenciesMeta": {
"mariadb": {
"optional": true
},
"mongodb": {
"optional": true
},
"mysql2": {
"optional": true
},
"pg": {
"optional": true
},
"sqlite3": {
"optional": true
}
},
"devDependencies": {
"@commitlint/cli": "^8.3.5",
"@commitlint/config-conventional": "^8.3.4",
"@types/clone": "^0.1.30",
"@types/fs-extra": "^8.1.0",
"@types/jest": "^25.2.1",
"@types/mongodb": "^3.5.4",
"@types/mysql2": "types/mysql2",
"@types/mongodb": "^3.5.8",
"@types/mysql": "types/mysql#41e381415afbb79452c0501ca3cf220c2cd390bc",
"@types/mysql2": "types/mysql2#b549352cda0b83fe8c4f4c11a1b4beb0b0cb0f5d",
"@types/node": "^13.11.0",
"@types/pg": "^7.14.3",
"@types/umzug": "^2.2.3",
Expand All @@ -149,18 +116,15 @@
"coveralls": "^3.0.11",
"eslint": "^6.8.0",
"eslint-plugin-jsdoc": "^22.1.0",
"fs-extra": "^9.0.0",
"husky": "^4.2.3",
"jest": "^24.9.0",
"lerna": "^3.20.2",
"lint-staged": "^10.1.1",
"mariadb": "^2.3.1",
"mongodb": "^3.5.8",
"mysql2": "^2.1.0",
"pg": "^8.0.0",
"rimraf": "^3.0.2",
"run-rs": "^0.6.2",
"semantic-release": "^17.0.4",
"sqlite3": "^4.1.1",
"ts-jest": "24.3.0",
"ts-jest": "^24.3.0",
"ts-node": "^8.8.2",
"typescript": "3.8.3"
}
Expand Down
8 changes: 8 additions & 0 deletions packages/cli/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules
src
tests
coverage
temp
yarn-error.log
data
tsconfig.*
59 changes: 59 additions & 0 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"name": "@mikro-orm/cli",
"version": "4.0.0-alpha.0",
"description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/mikro-orm/mikro-orm.git"
},
"keywords": [
"orm",
"mongo",
"mongodb",
"mysql",
"mariadb",
"postgresql",
"sqlite",
"sqlite3",
"ts",
"typescript",
"js",
"javascript",
"entity",
"ddd",
"mikro-orm",
"unit-of-work",
"data-mapper",
"identity-map"
],
"author": "Martin Adámek",
"license": "MIT",
"bugs": {
"url": "https://github.com/mikro-orm/mikro-orm/issues"
},
"homepage": "https://mikro-orm.io",
"bin": {
"mikro-orm": "./dist/cli.js"
},
"engines": {
"node": ">= 10.13.0"
},
"scripts": {
"build": "yarn clean && yarn compile",
"clean": "rimraf ./dist",
"compile": "tsc -p tsconfig.build.json"
},
"dependencies": {
"@mikro-orm/core": "^4.0.0-alpha.0",
"@mikro-orm/knex": "^4.0.0-alpha.0",
"@mikro-orm/entity-generator": "^4.0.0-alpha.0",
"chalk": "^4.0.0",
"cli-highlight": "^2.1.4",
"cli-table3": "^0.6.0",
"fs-extra": "^9.0.0",
"yargonaut": "^1.1.4",
"yargs": "^15.3.1"
}
}

0 comments on commit c886414

Please sign in to comment.