Я пытаюсь собрать небольшой пакет компонентов в машинописи и следующей настройке:
1. пакет (назовем его «test-package»)
root
src
index.ts
components
ExampleComponent.tsx
ui
index.ts
Button
index.tsx
так в моем / src / index.ts я пробовал что-то вроде:
export { default as ExampleComponent } from './components/example'
и внутри моего / src / components / ui / index.ts :
export { default as Button } from './Button'
2. проект внутри я хочу использовать «тест-пакет»
так что в моем проекте я могу использовать такие компоненты как
import { ExampleComponent } from 'test-package'
import { Button } from 'test-package/dist/components/ui'
все работает нормально и как положено - !! НО !!
что я действительно хочу, так это называть мои компоненты пользовательского интерфейса:
import { Button } from 'test-package/ui'
Я действительно пытался выяснить это сам в последние дни, поэтому я прочитал о baseUrl и path и rootDirs , но, если честно, я просто попробовал, как курица без головы, и закончил с:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"strict": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"baseUrl": ".",
"paths": {
"test-package/ui": ["./dist/components/ui"]
},
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strictNullChecks": false,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": false,
"sourceMap": true,
"jsx": "react",
"noImplicitAny": false,
"experimentalDecorators": true
},
"include":
[
"src"
],
"exclude": [
"node_modules",
"**/__tests__/*",
"/dist"
]
}
, что все еще не привело к тому, что я хочу
просто ради завершения, это мой пакет. Json:
{
"name": "test-package",
"version": "1.0.0",
"description": "",
"main": "dist/index.js",
"types": "dist/index.d.js",
"scripts": {
"test": "jest --config jestconfig.json",
"build": "rm -rf ./dist && tsc",
"lint": "eslint --fix ./src/** --rule 'no-console: [warn, { allow: [warn, error] }]'"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@types/jest": "^24.0.11",
"@types/react": "^16.8.13",
"@typescript-eslint/eslint-plugin": "^1.6.0",
"@typescript-eslint/parser": "^1.6.0",
"eslint": "^5.16.0",
"eslint-config-prettier": "^4.1.0",
"eslint-config-standard": "^12.0.0",
"eslint-config-standard-react": "^7.0.2",
"eslint-plugin-import": "^2.17.2",
"eslint-plugin-node": "^8.0.1",
"eslint-plugin-promise": "^4.1.1",
"eslint-plugin-react": "^7.12.4",
"eslint-plugin-react-hooks": "^1.6.0",
"eslint-plugin-standard": "^4.0.0",
"jest": "^24.7.1",
"ts-jest": "^24.0.2",
"tslint": "^5.16.0",
"tslint-config-prettier": "^1.18.0",
"typescript": "^3.4.3"
},
"peerDependencies": {
"react": ">= 16.8.0",
"react-dom": ">= 16.8.0"
},
"files": [
"dist/**/*"
]
}