# webpack-lib **Repository Path**: my_domain/webpack-lib ## Basic Information - **Project Name**: webpack-lib - **Description**: 基于webpack库模式编译生成组件库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-05 - **Last Updated**: 2025-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wb-lib ## 简介 使用 webpack 编译可生成多种js标准格式的组件库打包工具,默认支持 react 组件库的打包。 ## 安装 ``` // 在项目中安装wb-lib npm i wb-lib -D or yarn add wb-lib -D or pnpm add wb-lib -D ``` ## 命令 ``` /* 编译组件库 */ wb-lib lib /* 组件库开发预览 * 默认以src/(index.jsx|index.tsx)文件为入口, * 项目根目录可以创建index.html * 如果没有创建则默认使用内置的index.html */ wb-lib dev ``` ## 使用配置 可创建并使用 **`lib.config.js|lib.config.ts`** 配置来自定义打包。 #### 可使用属性 | 属性 | 类型 | 说明 | | ---- | --------------- | ---- | **format** | Object|Array|string | 生成格式配置【可配置类型 ['module','commonjs']等】,默认值为 `module` | **outputDir** | String | 输出存放文件夹,默认值为 `lib` | **clean** | Boolean | 是否在打包前清除存放文件夹,默认值为 `true` | **compileDir** | String | 编译目录,默认值为 `src/components` | **webpackConf** | Function|Object | 自定义 webpack 配置项, 如传入函数,函数参数为 `function (webpackConf,env,format){ return webpackConf; }`| #### 配置文件的使用示例 ##### 创建lib.config.ts|lib.config.js选其一就行,同时存在会默认优先加载lib.config.ts ###### 使用lib.config.ts 示例 ``` import { merge } from 'webpack-merge'; import { resolve } from 'path'; export default { compileDir: 'src/components', // 默认编译目录 outputDir: 'lib', // 输出存放文件夹 clean: true, // 是否在打包前清除存放文件夹 //【format 使用方式1】 format: 'module', // 生成 module 格式的文件 同时相关代码文件放入到 [outputDir]目录下【默认生成module格式】 //【format 使用方式2】 format: ['module', 'commonjs'], // 分别生成 module 和 commonjs 类型 同时相关代码文件放入到 [outputDir]/(module|commonjs) 目录下 //【format 使用方式3】 format: { // 生成 module 类型 同时相关代码文件放入到 [outputDir]/es 目录下 module: 'es', // 生成 commonjs 类型 同时相关代码文件放入到 [outputDir]/cjs 目录下 commonjs: 'cjs', }, //【webpackConf 使用方式1 webpack 配置项】 webpackConf: { // webpack 配置项 ..... } //【webpackConf 使用方式2 webpack 配置项】 webpackConf: function (config, env,format) { // 自定义 webpack 配置项 const customConfig = merge(config, { entry: resolve(__dirname, 'xxxx'), // dev命令 入口文件 resolve: { alias: { "xx": resolve(__dirname, 'xxxx') // 资源路径别名 } }, }) return customConfig; }, } ``` ###### 使用lib.config.js ``` const path = require('path'); const { merge } = require('webpack-merge'); module.exports = { compileDir: 'src/components', // 默认编译目录 outputDir: 'lib', // 输出存放文件夹 clean: true, // 是否在打包前清除存放文件夹 //【format 使用方式1】 format: 'module', // 生成 module 格式的文件 同时相关代码文件放入到 [outputDir]目录下【默认生成module格式】 //【format 使用方式2】 format: ['module', 'commonjs'], // 分别生成 module 和 commonjs 类型 同时相关代码文件放入到 [outputDir]/(module|commonjs) 目录下 //【format 使用方式3】 format: { // 生成 module 类型 同时相关代码文件放入到 [outputDir]/es 目录下 module: 'es', // 生成 commonjs 类型 同时相关代码文件放入到 [outputDir]/cjs 目录下 commonjs: 'cjs', }, //【webpackConf 使用方式1 webpack 配置项】 webpackConf: { // webpack 配置项 ..... } //【webpackConf 使用方式2 webpack 配置项】 webpackConf: function (config, env,format) { // 自定义 webpack 配置项 const customConfig = merge(config, { entry: path.resolve(__dirname, 'xxxx'), // dev命令 入口文件 resolve: { alias: { "xx": path.resolve(__dirname, 'xxxx) // 资源路径别名 } }, }) return customConfig; }, }; ``` ## 目录结构说明 #### 源目录结构 ``` ├── ... # 其他文件 ├── src/ # 源代码目录 │ ├── components/ # 组件目录 │ │ ├── button/ # 组件目录 │ │ │ └── index.tsx # 组件入口文件 │ │ │ ├── style/ # 组件样式文件的文件夹 │ │ │ │ ├── index.tsx # 组件样式入口文件[(可不创建)可将index.scss使用 import "./index.scss" 引入可配合组件按需加载使用] │ │ ├── ├── └── index.scss # 组件组件样式文件 │ │ ├── index.tsx # 所有组件的汇集[(可不创建)可以把所有组件出口都放在一处并且所有css都汇集到一个文件中便于后期使用项目一次性引入【export { default as Xxx } from './xxx'】] │ └── index.tsx # dev 入口文件 ├── index.html # 项目根目录html文件【可不创建】 ``` #### 编译后目录结构 **format 使用方式1** ``` ├── ... # 其他文件 ├── [outputDir]/ # 输出存放文件夹 │ ├── button/ # 组件目录 │ │ ├── index.js # 组件入口文件 │ │ ├── style/ # 组件样式目录 │ │ │ ├── index.js # 组件样式入口文件 │ │ │ └── index.css # 组件样式放入到style文件下并按照引入的js文件命名 │ ├── index.min.js # 所有组件的汇集 │ └── index.min.css # 所有组件的样式汇集 ``` **format 使用方式2** ``` ├── ... # 其他文件 ├── [outputDir]/ # 输出存放文件夹 │ ├── module/ # module 格式代码目录 │ │ ├── button/ # 组件目录 │ │ │ ├── index.js # 组件入口文件 │ │ │ ├── style/ # 组件样式目录 │ │ │ │ ├── index.js # 组件样式入口文件 │ │ │ │ └── index.css # 组件样式放入到style文件下并按照引入的js文件命名 │ │ ├── index.min.js # 所有组件的汇集 │ │ └── index.min.css # 所有组件的样式汇集 │ ├── commonjs/ # commonjs 格式代码目录 │ │ ├── button/ # 组件目录 │ │ │ ├── index.js # 组件入口文件 │ │ │ ├── style/ # 组件样式目录 │ │ │ │ ├── index.js # 组件样式入口文件 │ │ │ │ └── index.css # 组件样式放入到style文件下并按照引入的js文件命名 │ │ ├── index.min.js # 所有组件的汇集 └── └── └── index.min.css # 所有组件的样式汇集 ``` **format 使用方式3** ``` ├── ... # 其他文件 ├── [outputDir]/ # 输出存放文件夹 │ ├── es/ # module 格式代码目录 │ │ ├── button/ # 组件目录 │ │ │ ├── index.js # 组件入口文件 │ │ │ ├── style/ # 组件样式目录 │ │ │ │ ├── index.js # 组件样式入口文件 │ │ │ │ └── index.css # 组件样式放入到style文件下并按照引入的js文件命名 │ │ ├── index.min.js # 所有组件的汇集 │ │ └── index.min.css # 所有组件的样式汇集 │ ├── cjs/ # commonjs 格式代码目录 │ │ ├── button/ # 组件目录 │ │ │ ├── index.js # 组件入口文件 │ │ │ ├── style/ # 组件样式目录 │ │ │ │ ├── index.js # 组件样式入口文件 │ │ │ │ └── index.css # 组件样式放入到style文件下并按照引入的js文件命名 │ │ ├── index.min.js # 所有组件的汇集 └── └── └── index.min.css # 所有组件的样式汇集 ```