目前,我正在开发一个包并打算在npm上发布它,我使用TypeScript编写了它,但在打包时遇到了一些问题。
我将我的代码(TypeScript/Less文件)放在src
目录中,目录结构如下所示:
src
├── components
│ ├── table.less
│ └── table.tsx
├── index.tsx
└── utils
└── mock.tsx
由于我想在npm上发布它,所以我需要将其编译为JavaScript/CSS文件(在lib
文件夹中),以便其他开发人员可以直接导入它(无需在其项目中进行额外的编译)。结构应该是这样的:
lib
├── components
│ ├── table.css
│ └── table.js
├── index.js
└── utils
└── mock.js
但是,我遇到了一些问题:
- 如果我使用
tsc
命令,tsx
文件可以正确地编译为js
文件,但是less
文件将被忽略; - 如果我使用 webpack 命令而不是
tsc
,则结果将被捆绑在一个文件中,失去了其原始结构,并且这将使软件包用户感到困惑;
我认为我需要通过以下方式使其正常工作:
- 逐个从
src
编译所有文件到lib
(保持相同的文件夹结构);tsx
文件编译为js
文件;less
文件编译为css
文件;- 添加声明文件,例如
index.js.d.ts
和index.css.d.ts
; - 修改一些书写风格,例如将
import styles from './index.less'
修改为import styles from './index.css'
;或者直接将样式表注入到 js 文件中;(我不确定这一步)
- 使用 webpack 将所有东西打包到一个 JS 文件中,并提供最小化版本;
该软件包包含 JSX 语法,因为我在其中使用了 React。
据我所知,在编译 TS/JS 代码时需要使用 Babel,在编译 less 和其他资源时需要使用 webpack,但我对如何将它们结合起来使用感到困惑。
因此,您有什么建议可以帮助我解决这个问题吗?我看了许多教程,但大多数是 React/Less/TypeScript 项目(不是软件包开发),或者是 TypeScript 软件包(不使用 less/css)。
非常感谢您的帮助。