Repository navigation
v0.2.0-beta.0
Pre-release
Pre-release
·
7 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
The first beta: measured and gated. The benchmark suite has 15 workloads with warm-rebuild, development server and type-check
measurements, CI fails on a regression in output size or peak memory, and the corpus has 60 projects.
Added
- The benchmark (rathkit/pack-bench, figures in docs/benchmarks.md) has
15 workloads (Preact, Vue, Solid and Svelte apps, a monorepo-style TypeScript app, date-fns, Zod and D3 beside the original seven)
and times warm rebuilds in each tool's watch mode, development server start and HMR, and build plus type check for the
TypeScript workloads. Pack took the least memory in all 45 build cases and less time than every tool but esbuild and Parcel 3, which
were faster in 3 cases each. In watch mode a Pack rebuild is not the fastest, and HMR notices a change in 85 to 318 ms because it
polls; both are listed as gaps. There is no type-check figure for Pack, which has no checker yet. Against the previous published run, Pack's medians on the seven original workloads moved by -3% to +12% with
identical output and memory, and Pack is still ahead of esbuild in each of them. - The corpus grew from 24 to 60 pinned projects (
corpus/projects.json): more libraries (unjs, pmndrs, nanostores, chalk, d3,
preact and others), and Vue, Solid, Preact, React and Svelte apps, among them Vue apps with UnoCSS and Sass, Redux and
Material UI templates, and folders of larger repositories. All 60 build, and the apps load in a browser without errors. - Sass finds a package by its name, as Vite does:
@use 'element-plus/theme-chalk/src/index.scss'is looked for in the
node_modulesfolders above the file. A leading~works too. - CI checks the output size and the peak memory of the bundler against a stored baseline (
tests/baseline.json,tools/check-baseline.mjs):
five workloads built plain, minified and minified with a source map; a figure that grows past its tolerance fails the build. Time is
checked by the maintainer before a release (docs/RELEASING.md).
Fixed
export default function() {}(no space afterfunction) in a module that another module imports by name was written as
functioncluster_default () {}, which does not parse. Found building d3-hierarchy.- A Vite configuration that reads
__dirname,__filenameorrequireat load time (as most written for CommonJS do) is
bundled with their values instead of failing with "is not defined in ES module scope". Found building vitesse-lite. - The style block of a single-file component (
App.vue?vue&type=style&index=0&lang.scss) is compiled as Sass, Less or
Stylus by the language its query names, not left as source for the style sheet reader.