Я создаю монорепроект полного стека, используя lerna.
В одном из подпроектов я получил Cannot find module '@gepick/database/connect'
.
мой lerna. json
{
"packages": ["packages/*", "projects/**"],
"version": "0.0.0",
"useWorkspaces": true,
"npmClient": "yarn"
}
мой gepick / database / package. json :
{
"name": "@gepick/database",
"version": "1.0.0",
"devDependencies": {
"@types/lodash": "^4.14.149",
"@types/mongoose": "^5.7.11",
"source-map-loader": "^0.2.4"
},
"dependencies": {
"lodash": "^4.17.15",
"mongodb-client-encryption": "^1.0.1",
"mongoose": "^5.9.9"
}
}
пакет подпроектов на основе узла. json
{
"name": "scripts-api-football",
"version": "1.0.0",
"scripts": {
"start:collectDayMatches:dev": "tsc-watch --onSuccess \"node -r source-map-support/register build/collectDayMatches.js\"",
"build": "tsc"
},
"devDependencies": {
"@types/lodash": "^4.14.149",
"source-map-loader": "^0.2.4",
"source-map-support": "^0.5.19",
"tsc-watch": "^4.2.3"
},
"dependencies": {
"@gepick/database": "^1.0.0",
"axios": "^0.19.2",
"commander": "^5.0.0",
"lodash": "^4.17.15",
"nodemon": "^2.0.3"
}
}
пакет подпроекта на основе узла. json
{
"compilerOptions": {
"target": "es2019",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"strict": true,
"inlineSourceMap": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"allowJs": false,
"lib": ["es2016", "esnext.asynciterable", "webworker"],
"types": ["node"],
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strictPropertyInitialization": false,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": "./src",
"paths": {
"utils/*": ["./utils/*"]
}
},
"exclude": ["tests", "tasks"]
}
основной пакет. json :
{
"name": "gepick-lerna",
"version": "1.0.0",
"private": true,
"main": "index.js",
"license": "MIT",
"scripts": {
"start:front-web": "lerna run start --scope front-web --stream",
"bootstrap": "lerna bootstrap",
"build:scripts:api-football": "lerna run build --scope scripts-api-football --stream",
"start:scripts:api-football:start:collectDayMatches:dev": "lerna run start:collectDayMatches:dev --stream"
},
"dependencies": {
"lerna": "^3.20.2",
"typescript": "^3.8.3",
"webpack": "^4.42.1"
},
"workspaces": [
"projects/**",
"packages/*"
],
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.27.0",
"@typescript-eslint/parser": "^2.27.0",
"eslint": "^6.8.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.19.0",
"eslint-plugin-react-hooks": "^2.5.1"
}
}
Также я попытался добавить main: "connect.js"
в @gepick/datebase
пакет. json файл. Но похоже, что @gepick/datebase
пакет не скомпилирован js. Может быть, это проблема (TS c не компилирует файлы библиотеки)?