为了满足各种安装场景,我们规定了组件的构建输出规范,你可以依照下面的组件输出目录结构选择需要的安装方式。
├─ dist ## umd
│ ├─ tdesign.js
│ ├─ tdesign.js.map
│ ├─ tdesign.min.js
│ ├─ tdesign.min.js.map
│ ├─ tdesign.css
│ ├─ tdesign.css.map
│ └─ tdesign.min.css
├─ esm ## esm
│ ├─ button
│ ├─ style
│ └─ index.js
│ ├─ button.js
│ ├─ button.d.ts
│ ├─ index.js
│ └─ index.d.ts
│ ├─ index.js
│ └─ index.d.ts
│
├─ es ## es
│ ├─ button
│ ├─ style
│ ├─ css.js
│ ├─ index.css
│ └─ index.js
│ ├─ button.js
│ ├─ button.d.ts
│ ├─ index.js
│ └─ index.d.ts
│ ├─ index.js
│ └─ index.d.ts
│
├─ lib ## es
│ ├─ button
│ ├─ button.js
│ ├─ button.d.ts
│ ├─ index.js
│ └─ index.d.ts
│ ├─ index.js
│ └─ index.d.ts
|
├─ ejs ## cjs
│ ├─ button
│ ├─ button.js
│ ├─ button.d.ts
│ ├─ index.js
│ └─ index.d.ts
│ ├─ index.js
│ └─ index.d.ts
│
├─ LICENSE
├─ CHANGELOG.md
├─ README.md
└─ package.json
- 打包所有组件代码和样式,分别生成一个 js 与 css 文件
- 兼容现代浏览器,支持服务端渲染
- JS 文件采用 UMD 模块标准 构建
- JS / CSS 文件支持浏览器 script / link 标签 与 主流构建工具(webpack,rollup 等)引入使用
- JS 文件必须生成对应
.min
和.map
文件,以便线上资源加载和 debug - 以 common/style/(web|mobile)/index.less 为入口构建
- 在 dist 下生成一份未压缩的
tdesgin.css
和tdesign.css.map
- 压缩
tdesgin.css
生成tdesgin.min.css
- 分别编译每个组件的 TS 代码,生成对应的 JS 文件和类型声明文件
- 兼容现代浏览器,支持服务端渲染
- 组件导入/导出方式采用 ES Modules 标准,支持 tree-shaking,es/index.js 中单独导出每个组件,内容同
src/index.ts
- 组件文件夹下生成 style 目录,存放编译后的 CSS 样式文件
- 组件文件夹下必须包含类型声明文件
\*.d.ts
- 组件编译后代码用到的 babel runtime helpers 注入到每个组件
- 只编译组件代码,不用编译测试文件和文档文件等
- 分别编译每个组件的 TS 代码,生成对应的 JS 文件和类型声明文件
- 兼容现代浏览器,支持服务端渲染
- 组件导入/导出方式采用 ES Modules 标准,支持 tree-shaking,esm/index.js 中单独导出每个组件,内容同
src/index.ts
- 组件文件夹下生成
style/index.js
,链接未编译的less
样式文件 - 组件文件夹下必须包含类型声明文件
\*.d.ts
- 组件编译后代码用到的 babel runtime helpers 注入到每个组件
- 只编译组件代码,不用编译测试文件和文档文件等
- 分别编译每个组件的 TS 代码,生成对应的 JS 文件和类型声明文件
- 兼容现代浏览器,支持服务端渲染
- 组件导入/导出方式采用 ES Modules 标准,支持 tree-shaking,lib/index.js 中单独导出每个组件,内容同
src/index.ts
- 组件文件夹下不包含任何样式代码,可以结合 dist 目录下
tdesgin.min.css
搭配使用 - 组件文件夹下必须包含类型声明文件
\*.d.ts
- 组件编译后代码用到的 babel runtime helpers 注入到每个组件
- 只编译组件代码,不用编译测试文件和文档文件等
- 分别编译每个组件的 TS 代码,生成对应的 JS 文件和类型声明文件
- 兼容现代浏览器,支持服务端渲染
- 组件导入/导出方式采用 CommonJs Modules 标准,
lib/index.js
中单独导出每个组件,内容同src/index.ts
- 组件文件夹下必须包含类型声明文件
\*.d.ts
- 组件编译后代码用到的 babel runtime helpers 注入到每个组件
- 只编译组件代码,不用编译测试文件和文档文件等
- 遍历 common/style/(web|mobile)/componentName/index.less 入口构建每个组件的样式
- 每个组件生成一份
index.less
和index.css
放置到 lib/componentName/style/ 下 - component-name/style/ 下生成 index.js,写入 import './index.less';
- component-name/style/ 下生成 css.js,写入 import './index.css';
{
...
"files": [
"es",
"esm",
"lib",
"dist",
"LICENSE",
"README.md",
"CHANGELOG.md"
], // 指定上传到 NPM 上的文件
"sideEffects": [
"dist/*",
"site/*",
"examples/*",
"es/**/style/**",
"esm/**/style/**"
], // 指定有副作用的文件,可用于 tree-shaking
"main": "lib/index.js", // 指定通用的NPM包入口
"module": "es/index.js", // 指定支持ES Modules构建的NPM包入口
"unpkg": "dist/tdesign.min.js", // 指定 unpkg 入口
"jsdelivr": "dist/tdesign.min.js", // 指定 jsdelivr 入口
"typings": "lib/index.d.ts", // TS 声明
}
默认组件包的 main 入口指向 lib/index.js,esm 入口指向 es/index.js
我们推荐使用如 webpack 或 rollup 等支持 tree-shaking 的构建工具,默认只打包你实际使用到的代码
更具体的安装方式需要参考各组件库文档里的说明。