Skip to content

v0.2.0-beta.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 14:58
· 7 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.2.0-beta.0
b0ef4b5

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_modules folders 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 after function) 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, __filename or require at 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.