我有一个Lerna的monorepo和一个具有基本结构的打字稿
- root
package.json
- packages
package-A
package.json
src
package-B
package.json
src
root package.json tsconfig配置
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"sourceMap": true,
"allowSyntheticDefaultImports": true,
"paths": {
"@namespace/*": [
"packages/*/src"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"types": [],
"typeRoots": [
"./node_modules/@types"
]
},
"exclude": [
"node_modules",
"dist"
]
}
每个软件包的tsconfig看起来像
{
"extends": "../../tsconfig.json",
"include": ["src/**/*.ts"],
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
"baseUrl": "."
}
}
现在,当我运行lerna bootstrap
或lerna boostrap --hoist
时,来自程序包A和程序包B的所有依赖项都将移至根模块。在软件包级别没有生成node_modules文件夹。
这是正常行为吗?
也在开发中,在软件包中,我有一个运行ts-node -r tsconfig-paths/register ./src/index.ts
当我直接从命令行运行nodemon时,我得到了
sh: ts-node: command not found
[nodemon] failed to start process, "ts-node -r tsconfig-paths/register ./src/index.ts" exec not found
但是当我将其作为脚本添加到软件包的package.json "start:dev": "nodemon"
中并且执行npm run start:dev
时,它就可以工作了。
这就像nodemon抱怨在包的node_modules / .bin中找不到ts-node
的二进制文件一样(因为它没有生成),但是当我用start:dev
运行它时,它是从根node_modules ..?
我在设置中错过了什么吗?