{"id":13451853,"url":"https://github.com/packem/packem","last_synced_at":"2025-03-23T19:32:50.113Z","repository":{"id":41176156,"uuid":"179733980","full_name":"packem/packem","owner":"packem","description":"📦⚡ A precompiled JavaScript module bundler","archived":false,"fork":false,"pushed_at":"2023-01-04T07:24:51.000Z","size":5916,"stargazers_count":602,"open_issues_count":12,"forks_count":8,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-29T21:05:57.658Z","etag":null,"topics":["build-tool","bundler","code-splitting","compiler","javascript","minify","packem","plugin","prebuilt-binaries","rust"],"latest_commit_sha":null,"homepage":"https://packem.github.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/packem.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-05T18:22:25.000Z","updated_at":"2024-05-22T01:52:52.000Z","dependencies_parsed_at":"2023-02-02T03:15:24.589Z","dependency_job_id":null,"html_url":"https://github.com/packem/packem","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/packem%2Fpackem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/packem%2Fpackem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/packem%2Fpackem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/packem%2Fpackem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/packem","download_url":"https://codeload.github.com/packem/packem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244992770,"owners_count":20543862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["build-tool","bundler","code-splitting","compiler","javascript","minify","packem","plugin","prebuilt-binaries","rust"],"created_at":"2024-07-31T07:01:04.799Z","updated_at":"2025-03-23T19:32:50.046Z","avatar_url":"https://github.com/packem.png","language":"JavaScript","funding_links":["https://opencollective.com/packem/contribute","https://opencollective.com/packem","https://opencollective.com/packem/organization/0/website","https://opencollective.com/packem/organization/1/website","https://opencollective.com/packem/organization/2/website","https://opencollective.com/packem/organization/3/website","https://opencollective.com/packem/organization/4/website","https://opencollective.com/packem/organization/5/website","https://opencollective.com/packem/organization/6/website","https://opencollective.com/packem/organization/7/website","https://opencollective.com/packem/organization/8/website","https://opencollective.com/packem/organization/9/website"],"categories":["Projects","JavaScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg width=\"100\" src=\"https://raw.githubusercontent.com/packem/packem/master/resources/logo.png\" /\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ePackem\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.org/packem/packem\"\u003e\n    \u003cimg alt=\"Travis (.org)\" src=\"https://travis-ci.org/packem/packem.svg?branch=master\"\u003e\n  \u003c/a\u003e\n  \u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/dt/packem.svg\"\u003e\n  \u003cimg alt=\"David\" src=\"https://img.shields.io/david/packem/packem.svg\"\u003e\n  \u003ca href=\"https://gitter.im/packem_bundler/community\"\u003e\n    \u003cimg alt=\"Gitter\" src=\"https://img.shields.io/gitter/room/bukharim96/packem_bundler.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nPackem is an extensively _precompiled_ general-purpose JavaScript module bundler with a focus on performance, flexibility and extendibility. Its crust is built with [Rust](https://www.rust-lang.org/), a zero-cost abstraction systems programming language with guaranteed memory safety.\n\n\u003e **Note:** This is a pre-release version. **Do not use it in production**.\n\n## Build Status\n\nSince the v0.2 release, prebuilt Packem binaries are available for UNIX systems only. Binaries for Windows are not available for versions below v1.4.\n\n| Windows | macOS | Linux (Ubuntu) |\n| ------- | ----- | -------------- |\n| ❌      | ✔     | ✔             |\n\nAdditionally, Node 12 shipped a more stable implementation of the N-API which does not synchronize with the bindings implemented for the LC. For that reason, only the current versions of Node are battle-tested:\n\n| Node 10 | Node 9 | Node 8 |\n| ------- | ----- | -------------- |\n| ✔      | ✔     | ✔             |\n\n## Table of Contents\n\n1. [Why Packem?](#why-packem)\n2. [Installation](#installation)\n3. [Plugins](#plugins)\n4. [Further Reading](#further-reading)\n5. [Contributing](#contributing)\n6. [FAQ](#faq)\n7. [License](#license)\n\n## Why Packem?\n\n- Hypersonic speeds that go **+2X faster than [ParcelJS](https://parceljs.org/)**.\n- **Light** and **efficient** outputs.\n- **Unique configuration style** that will not make you cry.\n- **Code Splitting** with dynamic imports.\n- **Comprehensive \u0026 versatile plugin API** with an elegant approach.\n- **Common plugins** for smoother development experience.\n\n**Packem (v0.1.3-alpha) is +2X faster than [Parcel](https://parceljs.org/) (v1.12.3 - with multicore compilation).**\n\nModern bundlers today do optimize your code heavily, minify them and create near-perfect bundles but it comes at an expensive cost, time. The time slice is worth the effort to boost your productivity and not unnecessarily spending too much time on the tool.\n\nPackem's real power lies in its usage of Rust, which is the state-of-the-art in high performance solutions. This delivers **close-to-the-metal** speed when compared against other bundlers without comprimising features.\n\nIn a comparison of Packem against Parcel, each bundler had to compile the entire [Lodash v4.17.1](https://github.com/bukharim96/packem-lodash-test#packem-lodash-test) to a single bundle and this was the results of the speed test:\n\n| Test No. | Packem | Parcel |\n| -------- | ------ | ------ |\n| 1        | 4.23s  | 11.01s |\n| 2 (cold) | 5.12s  | 12.39s |\n| 3        | 4.55s  | 11.80s |\n\n\u003e **Note**\n\u003e\n\u003e Packem v0.2 uses a faster method of parsing the module graph using V8's `JSON.parse()` on larger graphs, making it upto 1.2-2.0x faster than previous versions.\n\n## Installation\n\nPackem is distrubuted as an npm package, so you can install it globally by executing the following command:\n\n```bash\n# Default installation method (with npm)\nnpm install -g packem\n\n# For Yarn, run\nyarn global add packem\n```\n\nCheckout the [Getting Started](https://packem.github.io/docs/getting-started.html) guide for more details.\n\n## Plugins\n\nPackem uses a comprehensive _class-based_ event system. Based off of this, plugins are instantiated in order of definition in the configuration during build time. Built-in events are also rehydrated into the plugins which they can hook onto using the `PackemEventDispatcher` API. More details on this can be found in the [Plugins API](https://packem.github.io/docs/plugin-system.html).\n\nMost of the common plugins are not included with a single installation of Packem and will require you to install them manually. Some of these common plugins include:\n\n- [dev-plugin](https://packem.github.io/docs/common-plugins.html#packemdev-plugin) - An abstraction of Packem's development toolkit i.e. the development server, watcher and other development utilities. This means, in essence, Packem doesn't enforce development tools by default.\n- [file-plugin](https://packem.github.io/docs/common-plugins.html#packemfile-plugin) - Loads common structural and text-based file formats to their appropriate equivalents in JavaScript like plain text files to strings \u0026 _YAML_ files to their respective JSON object representations.\n- [minify-plugin](https://packem.github.io/docs/common-plugins.html#packemminify-plugin) - Uses [terserjs](https://github.com/terser-js/terser) to crunch and optimize your JavaScript into tiny obfuscated files and write it to the output path.\n- [style-plugin](https://packem.github.io/docs/common-plugins.html#packemstyle-plugin) - Responsible for bundling SASS/SCSS, LESS \u0026 PostCSS to plain CSS which is then injected into the webpage at runtime.\n- [image-plugin](https://packem.github.io/docs/common-plugins.html#packemimage-plugin) - Processes a PNG, JPG/JPEG, GIF, WebP or SVG file, compresses it with a few options like `quality`, `compressionRatio` and `dithering` to create efficiently optimized images that still retain fidelity.\n- [bundle-stats-plugin](https://packem.github.io/docs/common-plugins.html#packembundle-stats-plugin) - Checks if your bundles exceed a certain customizable constraint/limit and issues tabular diagnostics with details like bundle size vs the pre-defined limit.\n- [markdown-plugin](https://packem.github.io/docs/common-plugins.html#packemmarkdown-plugin) - Transforms a Markdown file into escaped HTML and then returns the result into the bundling pipeline.\n- [coffeescript-plugin](https://packem.github.io/docs/common-plugins.html#packemcoffeescript-plugin) - Compiles CoffeeScript to JavaScript then appends it to the mainstream bundle.\n\n## Further Reading\n\n- [Roadmap](https://packem.github.io/docs/roadmap.html)\n- [Code Splitting](https://packem.github.io/docs/code-splitting.html)\n- [Common Plugins](https://packem.github.io/docs/common-plugins.html)\n- [Advanced Plugin APIs](https://packem.github.io/docs/advanced-plugin-apis.html)\n\n## Contributing\n\nPackem is a community-led project. We depend on your contributions to sustain this project through financial support, filing issues and presenting PRs. Check the [contribution guidelines](https://github.com/packem/packem/blob/master/CONTRIBUTING.md) for more details.\n\n## FAQ\n\nCheck the [FAQ](https://github.com/packem/packem/blob/master/FAQ.md) page to get help on some common caveats.\n\n## Contributors\n\n### Code Contributors\n\nThis project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].\n\u003ca href=\"https://github.com/packem/packem/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/packem/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n### Financial Contributors\n\nBecome a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/packem/contribute)]\n\n#### Individuals\n\n\u003ca href=\"https://opencollective.com/packem\"\u003e\u003cimg src=\"https://opencollective.com/packem/individuals.svg?width=890\"\u003e\u003c/a\u003e\n\n#### Organizations\n\nSupport this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/packem/contribute)]\n\n\u003ca href=\"https://opencollective.com/packem/organization/0/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/1/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/2/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/3/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/4/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/5/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/6/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/7/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/8/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/packem/organization/9/website\"\u003e\u003cimg src=\"https://opencollective.com/packem/organization/9/avatar.svg\"\u003e\u003c/a\u003e\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpackem%2Fpackem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpackem%2Fpackem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpackem%2Fpackem/lists"}