在我们的私有 Node 依赖项中使用绝对路径?
Using absolute path in our private Node dependencies?
我已经将我们的代码库的 React 组件拆分成一个私有依赖项,以便这些组件可以被不同的项目使用。这些组件都使用 Webpack 别名来使代码更具可读性:
import TestComponent from 'components/TestComponent';
而不是:
import TestComponent from '../../components/TestComponent';
现在组件已经从使用 Webpack 别名设置的项目中删除,所以别名自然停止工作。
我正在构建并尝试导入这些组件的新项目是这样完成的:
Wrapper project, a Vite development project importing the components library.
>> Components imported as a dependency named 'core'
>>> All of the included React components are using the absolute paths.
我真的很想知道是否有办法在依赖项本身中为导入别名 。 问题是我的文件 /views/TestView
正在尝试导入/components/shared/Button
并且仅在我使用相对路径时有效:
/views/TestView.jsx
import Button from '../components/shared/Button'
因此,除非我对数百个组件进行大规模重构以将绝对路径更改为相对路径,否则有什么方法可以在依赖项中为路径设置别名吗?
一个可能的解决方案(尚未尝试)可能是将组件进一步拆分为特定的类别依赖项,例如:
- 核心 - package.json 包含以下所有依赖项
- @core/views
- @core/components
任何关于如何实现这一点的帮助或想法(如果可能的话)将不胜感激。任何可以避免大规模重构和必须在每个文件中使用相对路径的麻烦。
为了解决这个问题,我选择了一个核心模块,将所有单独的文件夹作为依赖项包含在内。这意味着我可以这样调用代码:
import Component from 'components/button'
现已更改为使用核心模块的依赖项,因此它看起来像:
import Component from '@core/components/button'
我已经将我们的代码库的 React 组件拆分成一个私有依赖项,以便这些组件可以被不同的项目使用。这些组件都使用 Webpack 别名来使代码更具可读性:
import TestComponent from 'components/TestComponent';
而不是:
import TestComponent from '../../components/TestComponent';
现在组件已经从使用 Webpack 别名设置的项目中删除,所以别名自然停止工作。
我正在构建并尝试导入这些组件的新项目是这样完成的:
Wrapper project, a Vite development project importing the components library.
>> Components imported as a dependency named 'core'
>>> All of the included React components are using the absolute paths.
我真的很想知道是否有办法在依赖项本身中为导入别名 。 问题是我的文件 /views/TestView
正在尝试导入/components/shared/Button
并且仅在我使用相对路径时有效:
/views/TestView.jsx
import Button from '../components/shared/Button'
因此,除非我对数百个组件进行大规模重构以将绝对路径更改为相对路径,否则有什么方法可以在依赖项中为路径设置别名吗?
一个可能的解决方案(尚未尝试)可能是将组件进一步拆分为特定的类别依赖项,例如:
- 核心 - package.json 包含以下所有依赖项
- @core/views
- @core/components
任何关于如何实现这一点的帮助或想法(如果可能的话)将不胜感激。任何可以避免大规模重构和必须在每个文件中使用相对路径的麻烦。
为了解决这个问题,我选择了一个核心模块,将所有单独的文件夹作为依赖项包含在内。这意味着我可以这样调用代码:
import Component from 'components/button'
现已更改为使用核心模块的依赖项,因此它看起来像:
import Component from '@core/components/button'