Node.js 勒纳+;打字脚本+;npm:如何正确设置配置,使@projectName/package路径通过dist目录?
我试图将我的项目设置为monorepo,但我遇到了一个烦人的问题,即使用TypeScript和Lerna进行路径规划 我有两个react项目,一个API和一个核心项目,用于存储我的域模型和类型脚本定义。现在,我需要能够在API中使用核心代码,并在我的2个react项目中使用定义 我遇到的问题是,我必须从每个包的根路径开始。例如,Node.js 勒纳+;打字脚本+;npm:如何正确设置配置,使@projectName/package路径通过dist目录?,node.js,typescript,npm,lerna,Node.js,Typescript,Npm,Lerna,我试图将我的项目设置为monorepo,但我遇到了一个烦人的问题,即使用TypeScript和Lerna进行路径规划 我有两个react项目,一个API和一个核心项目,用于存储我的域模型和类型脚本定义。现在,我需要能够在API中使用核心代码,并在我的2个react项目中使用定义 我遇到的问题是,我必须从每个包的根路径开始。例如,@projectName/core/src/models/myModel而不是@projectName/core/models/myModel。dist目录不包含该结构,
@projectName/core/src/models/myModel
而不是@projectName/core/models/myModel
。dist
目录不包含该结构,这就是我要导入的内容
我找到了几篇文章,建议如何设置它,但我仍然遇到了一些问题,不确定哪里出了问题
我现在只关注导出@projectName/core
/tsconfig.json
/package.json
./packages/core/tsconfig.json
./packages/core/package.json
./packages/api/tsconfig.json
./packages/api/package.json
我从上面删除了依赖项以保持可读性
这些设置被添加到/tsconfig.json
中,以使其正常工作:
"composite": true,
"declaration": true
任何帮助都将不胜感激。谢谢 你找到解决办法了吗?我检查了lerna repo问题,这已被请求,但他们不想支持它,因为它不符合npm语义。我在野外看到的其他脚本是自定义版本,它们创建tmp文件夹,复制package.json文件,然后发布,但这不适用于本地包。@FernandoMontoya nope。至少在NPM7发布之前,我一直在工作区使用纱线。我现在只是浏览src/dist。是的,这似乎是目前唯一的方法,你检查过了吗?这不是我想要的解决方案,但我所做的是在
tsconfig.json
中将outDir设置为。/'
。这样,传输的文件都转储到根文件夹中,我可以在不使用/dist/…
的情况下引用它们。
{
"name": "projectName",
"private": true,
"devDependencies": {
"lerna": "^3.20.2",
"typescript": "^3.8.3"
}
}
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"lib": ["ES2019"],
"module": "commonjs",
"target": "ES2019",
"strict": true,
"resolveJsonModule": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*"]
}
{
"name": "@projectName/core",
"version": "0.0.1",
"private": true,
"directories": {
"lib": "dist",
"test": "tests"
},
"files": [
"dist"
],
"scripts": {
"build": "npm run clean && npm run compile",
"clean": "rm -rf ./dist",
"compile": "tsc"
},
"dependencies": {
},
"devDependencies": {
"typescript": "^3.8.3",
"webpack": "^4.43.0",
}
}
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"lib": ["ES2019"],
"module": "commonjs",
"target": "ES2019",
"strict": true,
"resolveJsonModule": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist"
},
"include": ["src/**/*"]
}
{
"name": "@projectName/api",
"version": "0.0.1",
"description": "api",
"files": [
"dist"
],
"main": "dist/server.js",
"scripts": {
},
"dependencies": {
"@packageName/core": "^0.0.1",
},
"devDependencies": {
"typescript": "^3.8.3",
"webpack": "^4.43.0",
"webpack-node-externals": "^1.7.2"
},
"private": true
}
"composite": true,
"declaration": true