My monorepo:
/app1
package.json
/app2
package.json
/shared
package.json
shared/package.json
有"name": "@company/shared"
.
应用项目的package.json
文件具有依赖关系"@company/shared": "file:../shared"
。
在引用共享代码时,我想要一个"短"样式,当东西移动时,它也不太容易被破坏:
import { foo } from "@company/shared"
但这不起作用,所以我必须这样做:
import { foo } from "../../../../../shared/src/something"
我摆弄了package.json
和tsconfig.json
都没有成功。
如何设置?
您应该使用 npm-link 将共享包链接到依赖包。
cd ~/shared # go into the package directory
npm link # creates global link
cd ~/app1 # go into some other package directory.
npm link @company/shared # link-install the package
这将告诉 npm 从共享文件夹安装包,并使用对原始包所做的任何更改进行更新
有关详细信息,请参阅 https://docs.npmjs.com/cli/link.html
编辑:我现在才意识到您计划将共享包上传到服务器。在这种情况下,您可以使用module-alias
包,https://www.npmjs.com/package/module-alias
这将允许您进行导入,例如const sharedModule = require('@shared/moduleName');
编辑#2:对于打字稿,请使用 https://www.npmjs.com/package/tsconfig-paths
实际上,上面的代码中缺少一部分。
共享项目需要将共享内容导出到index.js
(即"桶"文件(中,并在package.json
中引用它:
"main": "dist/index.js",
"types": "dist/index.d.ts",
然后别名导入样式起作用。