返回

用 81 行代码轻松编写你的 mini-webpack

前端

手写 mini-webpack(仅用 81 行代码)

想象一下,你正在面试一个前端工程大厂,面试官问你,"你能自己写一个 Webpack 吗?"你自信地回答:"当然可以,给我 81 行代码就可以了。"

听起来是不是很酷?今天,我们就来揭秘如何使用 81 行代码打造属于你自己的 mini-webpack。

准备工作:

  • 3 个 JS 文件:
    • index.js -> 依赖 subtraction.js
    • subtraction.js -> 依赖 sum.js

正文:

让我们从一个简单而常见的场景开始,我们有三个 JavaScript 文件:index.js、subtraction.js 和 sum.js。index.js 依赖于 subtraction.js,而 subtraction.js 依赖于 sum.js。我们的目标是将这些文件打包成一个可以被浏览器读取和执行的文件。

为了实现这一目标,我们需要创建一个脚手架文件,它将包含我们的打包逻辑。这个脚手架文件可以命名为 "bundle.js"。在 bundle.js 中,我们将使用以下 81 行代码:

const fs = require("fs");
const path = require("path");

const files = ["index.js", "subtraction.js", "sum.js"];
const outputFile = "bundle.js";
const outputPath = path.resolve(__dirname, outputFile);

let code = "";
for (let file of files) {
  code += fs.readFileSync(path.resolve(__dirname, file), "utf-8");
  code += "\n";
}

fs.writeFileSync(outputPath, code);

console.log(`Bundled code saved to ${outputPath}`);

代码详解:

  1. 使用 require 引入必要的 Node.js 模块,包括 fspath
  2. 定义我们要打包的文件列表。
  3. 定义输出文件的文件名和路径。
  4. 创建一个空字符串来存储打包后的代码。
  5. 循环遍历文件列表,读取每个文件的内容并将其添加到 code 字符串中。
  6. 将打包后的代码写入输出文件。
  7. 在控制台中输出成功信息。

就是这样!我们的 mini-webpack 已经完成了。只要运行 node bundle.js,它就会将我们的三个 JS 文件打包到 bundle.js 中。

结论:

编写自己的 mini-webpack 不仅是一个有趣的练习,也是对打包过程的深入了解。通过这 81 行代码,你可以体验 webpack 的核心概念,并欣赏它的简化和模块化功能。所以,下次有人问你是否可以自己编写一个 webpack 时,别犹豫,用这 81 行代码给他们一个惊喜吧!