从零开始构建一个工具库
从零开始构建一个工具库
大家在平常的开发中或多或少都使用过一些主流的工具库,例如 Lodash Day.js 等,这些库极大的降低了我们在开发一些项目时的复杂度,加快了我们的开发进度。但是随着时间的增长,我们会积累一些常用的自定义工具函数,如果遇到重复的业务逻辑一般都是在做过的项目里面翻找,然后粘贴复制。聪明一点的会写一些代码片段,然后通过一些效率工具粘贴复制。当然这样做也未尝不可,随着前端工程化水平不断的提高,使用 npm 作为我们项目的包管理工具已经变得很普通了,我们可以考虑写一个自定义的工具库,在方便自己的同时,发布在 npm 上面,也是为社区做出了自己一点点的贡献,那么今天我们就尝试从零开始搭建一个属于自己的前端工具库。
1. 创建项目并初始化
mkdir create-utils-lib
cd create-utils-lib
git init
npm init -y
2. 构建基础框架
我这里是采用了 rollup.js 作为打包工具,相比 webpack 更适合构建工具库,配置也相对简单一点。
npm install --save-dev rollup @rollup/plugin-babel
touch rollup.config.js
打开 rollup.config.js 配置文件,填入以下配置
import { babel } from '@rollup/plugin-babel';
export default {
input: 'src/main.js',
output: {
name: '_',
file: 'lib/bundle.js',
format: 'iife',
},
plugins: [
babel({
babelHelpers: 'bundled',
}),
],
};
使用 Babel 可以将我们的高版本 JavaScript 代码编译成低版本,以便适配更多的浏览器。
npm install --save-dev @babel/core @babel/preset-env
touch babel.config.js
打开 babel.config.js 配置文件,填入以下配置
module.exports = {
presets: [['@babel/preset-env', { targets: { node: 'current' } }]],
};
默认采用 IIFE 模式,打包后可以直接在浏览器中使用。到这里,一个最基础的库构建应用就搭建好了,我们尝试写一个求和函数来测试一下。
mkdir src
touch main.js
在 main.js 键入以下代码
export function sum(a, b) {
return a + b;
};
打开 package.json 新增 build 命令
"scripts": {
"build": "rollup --config"
}
在命令行中执行 npm run build
,通过新建 HTML 文件并加载打包后的文件,就可以直接使用工具库了。
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<title>create-utils-lib</title>
</head>
<body>
<script src="./lib/bundle.js"></script>
<script>
console.log(_.sum(1, 2)); // 3
</script>
</body>
</html>
是不是觉得很简单,当然这只是最基本的工具库应用,并没有考虑代码规范、提交风格、持续集成等因素,下期我们将解决这些问题,使之成为一个健壮的工具库。