我可以从本地纱线工作区依赖包中导入“main”:“index.js”文件之外的子模块吗?
Posted
技术标签:
【中文标题】我可以从本地纱线工作区依赖包中导入“main”:“index.js”文件之外的子模块吗?【英文标题】:Can I import submodules outside of the "main": "index.js" file from a local yarn workspace dependency package? 【发布时间】:2021-09-30 20:53:05 【问题描述】:我有以下 monorepo 结构(使用 yarn 工作区)。
packages
common
src
index.js
module1.js
module2.js
package.json
user
src
index.js
moduleA.js
mobuleB.js
package.json
package.json
我的根package.json
"private": true,
"workspaces": ["packages/*"]
package.json
来自common
"name": "@packages/common",
"version": "1.0.0",
"main": "src/index.js",
"license": "MIT"
package.json
来自user
"name": "@packages/user",
"version": "1.0.0",
"main": "src/index.js",
"license": "MIT",
"dependencies":
"@packages/common": "1.0.0"
正如所料,user
包需要从common
包中“使用/导入”。
这是我的问题:如果我想从 common
包中导入 module1
或 module2
。有没有办法直接做,比如:
import Foo from "@packages/common/src/module1";
这是一种反模式吗?我应该只从@packages/common
导入import
,这意味着从common/src/index.js
导入(鉴于package.json)
上的main
属性?
我非常想从common
包中访问任何src/sub-folder/sub-file
。我应该import | re-export
common/src/index.js
文件中的所有内容,还是有办法直接获取其他文件?
【问题讨论】:
【参考方案1】:是的,你可以。以下应该可以正常工作:
import Foo from "@packages/common/src/module1";
OBS:以下详细信息是针对 Next.js 项目的,但其他项目的想法可能相同。
请记住,如果您需要转译这些文件(位于下一个项目文件夹之外的文件),则需要使用 next-transpile-modules
包。
更多细节可以在这里找到:
Medium: Sharing code between NextJS applications nextjs-sharing-code-monorepo next-transpile-modules【讨论】:
以上是关于我可以从本地纱线工作区依赖包中导入“main”:“index.js”文件之外的子模块吗?的主要内容,如果未能解决你的问题,请参考以下文章