dwj*_*ton 6 node.js typescript package.json yarnpkg yarnpkg-v2
我正在玩 Yarn 2,我想做这样的事情。
我有一个结构的单一存储库:
/
packages/
shared-ts/
package.json
src/
lib*/
app-ts/
package.json
src/
lib*/
app-js/
package.json
src/
lib*/
Run Code Online (Sandbox Code Playgroud)
wherelib*表示该文件夹被 gitignored,但它是编译后的代码所在的位置。
shared-ts在此示例中,我有一个由两个应用程序使用的依赖库,app-ts并且app-js.
配置像这样的 monorepo 的传统方法是,shared-ts我会有一个 package.json,如下所示:
"main": "lib/index.js"
"scripts" : {
"build": "tsc"
}
Run Code Online (Sandbox Code Playgroud)
脚本将在其中build构建index.js并index.d.ts放入 lib 文件夹中。
当两者app-ts都app-js解析包时,他们会在 lib 文件夹中查找并找到index.js和 的app-ts情况 - index.d.ts.
这工作得很好,除了开发人员需要记住运行build脚本(如果他们进行了更改)shared-ts以便传播更改。
这可能会成为问题的地方是存在多层依赖关系的地方。
main进行工作src/index.ts。我可以将shared-tspackage.json 更改为
"main": "src/index.ts"
"scripts" : {
"build": "tsc"
}
Run Code Online (Sandbox Code Playgroud)
这通常不起作用,普通节点进程将无法解析文件中的语法.ts(例如import关键字)。
publishConfig所以我正在考虑但尚未尝试的是使用publishConfig
package.json 中的字段
该字段包含各种设置,仅当从本地源生成包时才会考虑这些设置(通过yarn pack或yarn npmpublish等发布命令之一)。
"main": "src/index.ts",
"publishConfig": {
"main": "lib/index.js"
}
Run Code Online (Sandbox Code Playgroud)
这个想法是:
lib/index.js将用作 main。代码已可供使用,无需编译。src/index.ts将用作 main。例如,这种工作方式就像您正在运行一样app-ts。ts-node然而,这种情况开始崩溃的地方是:
app-js(无需设置任何额外的语法解析)。我目前最好的解决方案是“放弃这种‘不编译’的愿望”——如果开发人员对某些代码进行了更改,他们需要重新运行构建才能传播更改。
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |