【发布时间】:2019-12-23 12:16:03
【问题描述】:
目前,我正在开发一个包并将其发布到 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文件中; (我不确定这一步)
-
- 捆绑一个包含所有内容的 js 文件(使用 webpack),以及最小化版本;
包中包含 JSX 语法,因为我在其中使用了 React。
据我所知,我需要使用 Babel 编译 TS/JS 代码,使用 webpack 编译 less 和其他资产,但我对如何将它们结合在一起工作感到困惑。
那么对于如何结合很酷的工具来解决我的问题有什么建议吗?我浏览了很多教程,但其中大多数是 React/Less/TypeScript 项目(不是包开发)或 TypeScript 包(不使用 less/css)。
非常感谢。
【问题讨论】:
标签: reactjs typescript webpack less bundle