{"id":31521758,"url":"https://github.com/erickwendel/recreating-uglifyjs-talk","last_synced_at":"2026-05-15T22:33:28.790Z","repository":{"id":298892993,"uuid":"1001443721","full_name":"ErickWendel/recreating-uglifyjs-talk","owner":"ErickWendel","description":"All the references, slides, and resources from my talk \"Recreating UglifyJS From Scratch: Demystifying Code Minification and Source Map Generation\".","archived":false,"fork":false,"pushed_at":"2025-06-13T12:36:46.000Z","size":9,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-03T14:46:19.097Z","etag":null,"topics":["abstract-syntax-tree","code-generation","code-generator","codegen","javascript","minify-javascript","nodejs","source-maps","uglifyjs"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ErickWendel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-13T11:45:14.000Z","updated_at":"2025-06-22T22:36:25.000Z","dependencies_parsed_at":"2025-06-13T13:32:53.249Z","dependency_job_id":"1f1ea54a-e118-4604-814b-c655cacb3c78","html_url":"https://github.com/ErickWendel/recreating-uglifyjs-talk","commit_stats":null,"previous_names":["erickwendel/recreating-uglifyjs-talk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ErickWendel/recreating-uglifyjs-talk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Frecreating-uglifyjs-talk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Frecreating-uglifyjs-talk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Frecreating-uglifyjs-talk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Frecreating-uglifyjs-talk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErickWendel","download_url":"https://codeload.github.com/ErickWendel/recreating-uglifyjs-talk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2Frecreating-uglifyjs-talk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33082027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abstract-syntax-tree","code-generation","code-generator","codegen","javascript","minify-javascript","nodejs","source-maps","uglifyjs"],"created_at":"2025-10-03T14:31:58.366Z","updated_at":"2026-05-15T22:33:28.785Z","avatar_url":"https://github.com/ErickWendel.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Recreating UglifyJS Talk: Demystifying Code Minification \u0026 Source Maps\n\n[![Slides](https://img.shields.io/badge/Slides-View-blue)](https://ewbr.cc/recreating-uglify-slides)\n[![Source Code](https://img.shields.io/badge/Source%20Code-GitHub-green)](https://bit.ly/creating-your-own-uglifyjs-code)\n\nWelcome! This repository gathers all the references, slides, and resources from my talk **\"Recreating UglifyJS From Scratch: Demystifying Code Minification and Source Map Generation\"**.\n\n## 🚀 About the Talk\n\nUnlock the secrets of code minification and source map generation! In this session, you'll:\n\n- Explore Abstract Syntax Trees (ASTs) and their role in code manipulation.\n- Recreate a simplified version of UglifyJS from scratch.\n- Learn how source maps work and how to generate them.\n- Get inspired to build your own code-generation tools.\n\n## 📚 Table of Contents\n\n- [Slides](#-slides)\n- [Source Code](#-source-code)\n- [Premium Content](#-premium-content)\n- [References](#-references)\n- [Getting Started](#%EF%B8%8F-getting-started)\n- [Feedback](#-feedback)\n\n## 🎤 Slides\n\n- [View the slides](https://ewbr.cc/recreating-uglify-slides)\n- [View the video](https://ewbr.cc/uglify-video)\n\n## 💻 Source Code\n\n- [Step-by-step UglifyJS recreation](https://ewbr.cc/recreating-uglify-code)\n- [ESLint Clone tutorial(related project)](https://ewbr.cc/eslint-video)\n\n## 🏆 Premium Content\n\n- [Ebook: Recreating Node.js from Scratch](https://bit.ly/ebook-recreating-nodejs)\n- [Mastering Node.js Streams](https://bit.ly/nodejs-streams-training)\n\n## 🔗 References\n\n- [Blog Post: Source Maps](https://web.dev/source-maps/)\n- [Source Maps Visualizer](https://sokra.github.io/source-map-visualization/)\n- [Enable Mapping on Firefox](https://umaar.com/dev-tips/96-resolve-variable-names)\n- [Source Maps Spec](https://sourcemaps.info/spec.html)\n- [TC39](https://tc39.es/)\n- [TC39 Source Maps Proposal](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#)\n- [acorn (AST generator)](https://www.npmjs.com/package/acorn)\n- [escodegen (JS code generator)](https://www.npmjs.com/package/escodegen)\n- [AST Explorer](https://astexplorer.net/)\n- [Base64 VLQ (spec)](https://tc39.es/ecma426/#sec-base64-vlq)\n- [Node.js Source Map API](https://nodejs.org/docs/v22.16.0/api/module.html#sourcemapfindoriginlinenumber-columnnumber)\n- [Chrome DevTools: Source Maps](https://developer.chrome.com/docs/devtools/javascript/source-maps)\n- [UglifyJS AST](https://github.com/mishoo/UglifyJS/blob/v2.0/lib/ast.js)\n- [Variable-length quantity (Wikipedia)](https://en.wikipedia.org/wiki/Variable-length_quantity)\n- [Minification (Wikipedia)](https://en.wikipedia.org/wiki/Minification_%28programming%29)\n\n## 🛠️ Getting Started\n\nThis repository is a companion to the talk and serves as a reference hub. For hands-on code, check out the [source code links above](#-source-code).\n\n## 💬 Feedback\n\nHave suggestions or want to contribute more resources? Feel free to open an issue or reach out!\n\n---\n\nEnjoy your journey into the world of code minification and source maps!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickwendel%2Frecreating-uglifyjs-talk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferickwendel%2Frecreating-uglifyjs-talk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickwendel%2Frecreating-uglifyjs-talk/lists"}