lerna没有在软件包中生成node_module

问题描述

我有一个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 bootstraplerna boostrap --hoist时,来自程序包A和程序包B的所有依赖项都将移至根模块。在软件包级别没有生成node_modules文件夹。

这是正常行为吗?

也在开发中,在软件包中,我有一个运行ts-node -r tsconfig-paths/register ./src/index.ts

nodemon脚本。

当我直接从命令行运行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 ..?

我在设置中错过了什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)