lerna没有在软件包中生成node_module

时间:2020-11-11 13:20:38

标签: typescript npm package.json lerna monorepo

我有一个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 ..?

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

0 个答案:

没有答案