{"id":15936,"library":"webup","title":"Webup: HTML/ES6 Bundler with Plugin Architecture","description":"Webup is a minimalist builder/bundler for web projects, primarily concerned with reading, joining, and splitting HTML, CSS, and JavaScript files. Unlike opinionated, all-in-one bundlers, Webup's core is intentionally 'lazy,' relying heavily on a robust plugin and preset system to perform actual bundling, optimization, and transformation tasks. The current stable version is 1.8.0, published in 2021. The project has an open-ended release cadence, with the last update several years ago. Its key differentiator is its modular approach, requiring users to explicitly configure or choose presets and plugins to achieve a desired build process, offering high flexibility but requiring more setup than integrated solutions. It supports entry points, shell templates, destination paths, and source inclusion.","status":"abandoned","version":"1.8.0","language":"javascript","source_language":"en","source_url":"https://github.com/VandeurenGlenn/webup","tags":["javascript"],"install":[{"cmd":"npm install webup","lang":"bash","label":"npm"},{"cmd":"yarn add webup","lang":"bash","label":"yarn"},{"cmd":"pnpm add webup","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for any default build behavior, as webup does nothing without presets.","package":"webup-preset-default","optional":false},{"reason":"Example plugin for handling split HTML, CSS, and JS paths, often used in complex projects.","package":"webup-plugin-split","optional":true}],"imports":[{"note":"The primary function is likely a default export, common in older bundler patterns. CommonJS `require` might work in Node, but ESM `import` is preferred for modern projects.","wrong":"import { webup } from 'webup';\nconst webup = require('webup');","symbol":"webup","correct":"import webup from 'webup';"}],"quickstart":{"code":"import webup from 'webup';\n\n// Ensure you have webup-preset-default installed: npm install webup-preset-default\n// and potentially create your source files:\n// public/index.html\n// public/my-app.html\n// public/js/main.js\n\nwebup({\n  entry: 'public/index.html',\n  shell: 'public/my-app.html',\n  dest: 'build/index.html',\n  sources: ['public/**/*', './node_modules/**/*', '!./node_modules/**/*.test.js'], // Include node_modules for dependencies\n  plugins: [], // Custom plugins can be added here\n  presets: ['default'] // The 'default' preset (from webup-preset-default) is essential\n})\n.then(() => {\n  console.log('Webup build successful!');\n})\n.catch(error => {\n  console.error('Webup build failed:', error);\n});\n","lang":"javascript","description":"Demonstrates a basic Webup build configuration, bundling HTML, CSS, and JavaScript into a specified destination using the default preset."},"warnings":[{"fix":"Always include `presets: ['default']` (after installing `webup-preset-default`) or your custom presets in the `webup` configuration object.","message":"Webup's core is deliberately minimalist and 'does nothing' by default. You must explicitly define `presets` in your configuration to enable any build functionality.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Consider migrating to a more actively maintained bundler (e.g., Vite, Rollup, Webpack) for new projects or for existing projects requiring ongoing support and security updates.","message":"The project appears to be unmaintained. The last commit on GitHub was in April 2021, and the last npm publish was 3 years ago. This means there will be no future updates, bug fixes, or security patches.","severity":"breaking","affected_versions":">=1.8.0"}],"env_vars":null,"last_verified":"2026-04-21T00:00:00.000Z","next_check":"2026-07-20T00:00:00.000Z","problems":[{"fix":"Ensure your `webup` configuration includes at least `presets: ['default']` after installing `webup-preset-default`.","cause":"The `presets` array was omitted or empty in the Webup configuration.","error":"Error: No presets defined. Webup cannot perform any build tasks."},{"fix":"Ensure your Node.js project is configured for ES modules (e.g., `\"type\": \"module\"` in `package.json`) or use `require()` syntax if strictly operating in CommonJS.","cause":"Attempting to use ES module `import` syntax in a CommonJS environment without proper transpilation or Node.js configuration.","error":"SyntaxError: Cannot use import statement outside a module"}],"ecosystem":"npm"}