【问题标题】:How to package only the dist folder in a monorepo如何仅将 dist 文件夹打包到 monorepo
【发布时间】:2020-08-23 10:27:30
【问题描述】:

我在我的 monorepo 中使用 lerna 和 yarn 工作区。包结构如下:

root
`--- packages
     |--- pkg1
     |    |--- src
     |    |    `--- index.ts
     |    `--- dist
     |         `--- index.js
     `--- pkg2
          |--- src
          |    `--- index.ts
          `--- dist
               `--- index.js
  • src 文件夹被编译成 dist 文件夹。
  • 从每个包中,我想只发布dist 文件夹,这样导入工作就不需要package.json 中指向dist 文件夹内的main 条目。使用 lerna 很容易做到这一点:lerna publish --contents dist

这适用于需要使用此存储库的外部项目,但它不适用于存储库本身。例如,如果pkg2 依赖于pkg1,它会在pkg1/index.js 处查找pkg1 的index.js 文件,而实际上编译后的版本位于pkg1/dist/index.js 下。我怎样才能做到这一点?

附:我在 material-ui 这样的存储库中看到了这项工作,但我无法解释它是如何在那里工作的!

【问题讨论】:

  • 您找到解决方案了吗?还要检查stackoverflow.com/questions/61568475/…
  • 不,我还没有找到好的解决方案。还查看了您指出的 SO 问题。
  • 我今天下午的大部分时间都在将它迁移到nx.dev,它工作得很好,但我只是遇到了一个构建错误。
  • 这不是我想要的解决方案,但我所做的是将tsconfig.json 中的outDir 设置为'./'。这样编译后的文件全部转储到根文件夹中,我可以在没有/dist/...的情况下引用它们。

标签: lerna yarn-workspaces npm-publish


【解决方案1】:

看看package.json文件https://docs.npmjs.com/files/package.json#files的“files”字段

“文件”字段是要包含在项目中的文件数组。如果您在数组中命名一个文件夹,那么它还将包括该文件夹内的文件。 (除非它们会被另一条规则忽略。)

【讨论】:

    【解决方案2】:

    终于找到解决办法了:

    需要在需要注入的依赖的package.json中添加publishConfig,参考如下:

    干杯

    【讨论】:

    • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2020-08-18
    • 2023-02-14
    • 2021-07-12
    相关资源
    最近更新 更多