2

使用 NPM 工作区,我components与其他人(webapp1和)共享一个包( webapp2)。像这样的东西:

root
  apps   
    webapp1
    webapp2
  packages
    components

一切都运行良好,但文件夹components中的所有内容,包括源代码src正在共享。由于components' 编译输出文件夹是dist,我只想共享该文件夹。这是它在根目录中的样子node_modules

在此处输入图像描述

问题是当我需要导入webapp1orwebapp2时,我的导入路径必须包含该dist文件夹。这是我从 VS Code 获得的智能感知:

在此处输入图像描述

这就是我导入webapp1和的方式webapp2

import Center from '@mycompany/components/dist/Center'

虽然一切正常,但如何设置我的 NPM 工作区,以便仅dist在其根目录中共享文件夹的内容?

我已经尝试过 NPM 的文件.npmignorecomponents文件夹中忽略除dist文件夹之外的所有内容,但这似乎不起作用。mainpackage.json 中的属性components也设置为指向dist/index.js

"main": "dist/index.js"

有趣的是,如果我想导入dist/index.js文件,我可以不用dist

import foo from '@mycompany/components'

...但是,导入除dist/index.js需要dist包含在路径中之外的任何内容。

4

1 回答 1

1

在您的用例中,您应该将 packages 文件夹视为 dist 文件夹的集合。

在这种情况下,您会将packages/components/src文件夹移动到项目中的其他位置,然后构建到packages/components而不是packages/components/dist

root
  apps   
    webapp1
    webapp2
  packages
    components
  src
    components

我在创建的这个工具 monorepo中有类似的设置

于 2021-08-15T19:14:55.120 回答