Bra*_*per 20 node.js typescript monorepo npm-workspaces
我使用 NPM 工作区和 Typescript 设置了 NodeJS monorepo。它在没有 Typescript 的情况下工作得很好,但是引入 TS 会带来一些依赖解决错误。当前目录设置:
\n+-- node_modules\n+-- package.json\n+-- tsconfig.json\n+-- tsconfig.build.json\n+-- packages\n +-- core\n | +-- package.json\n | +-- tsconfig.json\n | +-- src\n | +-- index.ts\n +-- shared\n | +-- package.json\n | +-- tsconfig.json\n | +-- src\n | +-- helper.ts\nRun Code Online (Sandbox Code Playgroud)\n运行npm ls确认所有内容都已正确符号链接:
monorepoDemo@1.0.0 C:\\Users\\<user>\\Documents\\Temp\\monorepoDemo\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac @my-packages/core@1.0.0 -> .\\packages\\core\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 @my-packages/shared@1.0.0 deduped -> .\\packages\\shared\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 @my-packages/shared@1.0.0 -> .\\packages\\shared\nRun Code Online (Sandbox Code Playgroud)\n我有一个从helper.tsin导出的虚拟辅助函数shared。正在导入到index.ts中core。根package.json,tsconfig.ts和 tsconfig.build.json:
{\n "name": "monorepoDemo",\n "version": "1.0.0",\n "description": "",\n "main": "index.js",\n "scripts": {\n "start": "node packages/core/src/index.ts",\n "test": "echo \\"Error: no test specified\\" && exit 1",\n "build": "tsc -b --verbose tsconfig.build.json"\n },\n "author": "",\n "license": "ISC",\n "workspaces": [\n "packages\\\\core",\n "packages\\\\shared"\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n{\n "compilerOptions": {\n "composite": true,\n "target": "es2021",\n "module": "commonjs",\n "declaration": true,\n "declarationMap": true,\n "esModuleInterop": true,\n "forceConsistentCasingInFileNames": true,\n "strict": true,\n "skipLibCheck": true\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n{\n "files": [],\n "references": [\n {\n "path": "packages/core"\n },\n {\n "path": "packages/shared"\n }\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n的package.json和:tsconfig.jsoncore
{\n "name": "@my-packages/core",\n "version": "1.0.0",\n "description": "",\n "main": "index.js",\n "scripts": {\n "test": "echo \\"Error: no test specified\\" && exit 1"\n },\n "author": "",\n "license": "ISC",\n "dependencies": {\n "@my-packages/shared": "^1.0.0"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n{\n "extends": "../../tsconfig.json",\n "compilerOptions": {\n "rootDir": "./src",\n "outDir": "./dist",\n "baseUrl": ".",\n "paths": {\n "@my-packages/shared": ["../shared"]\n }\n },\n "references": [{ "path": "../shared" }],\n "exclude": ["dist"]\n}\nRun Code Online (Sandbox Code Playgroud)\n的package.json和:tsconfig.jsonshared
{\n "name": "@my-packages/shared",\n "version": "1.0.0",\n "description": "",\n "main": "index.js",\n "scripts": {\n "test": "echo \\"Error: no test specified\\" && exit 1"\n },\n "author": "",\n "license": "ISC"\n}\nRun Code Online (Sandbox Code Playgroud)\n{\n "extends": "../../tsconfig.json",\n "compilerOptions": {\n "rootDir": "./src",\n "outDir": "./dist"\n },\n "exclude": ["dist"]\n}\nRun Code Online (Sandbox Code Playgroud)\nindex.ts以及和的源代码helper.ts:
import { helper } from "@my-packages/shared"\n\n(async () => {\n console.log("Bootstrapping from core package")\n\n helper()\n})()\nRun Code Online (Sandbox Code Playgroud)\nexport function helper(): void {\n console.log("Running from shared package")\n}\nRun Code Online (Sandbox Code Playgroud)\n我遇到的错误index.ts:\nCannot find module '@my-packages/shared' or its corresponding type declarations.ts(2307)
我认为这与丢失的声明文件有关,因此尝试创建一个,helper.ts但没有成功
Jan*_*Kim 15
mainfile 字段是package.json其他包(如 )导入该包时的入口点core:
import { helper } from "@my-packages/shared"
Run Code Online (Sandbox Code Playgroud)
此代码将尝试查找@my-packages/shared/index.js不存在的 。
当您构建共享包时,构建的文件位于dist/helper.js.
更改主字段以"main": "dist/helper.js"使其正常工作。如果您使用的是 vscode,请不要忘记重新启动语言服务器。
对于其他注意事项,例如特定编译器选项或 esm 支持,请参阅文档Node.js 中的 ECMAScript 模块。
| 归档时间: |
|
| 查看次数: |
19477 次 |
| 最近记录: |