{"id":18793,"library":"skulk","title":"Skulk","description":"Skulk (v0.1.1) is a configurable Browserify bundler and livereloading server for building client and/or client+server apps. It supports multiple bundles, factor-bundle, and CSS splitting. It aims to reduce boilerplate by providing presets and a unified config. Dev mode uses Browserify + watchify, an Express server for serving bundles from memory, and tiny-lr for livereload. Prod mode writes bundles to disk. This is an early release with incomplete API (many TODO items).","status":"active","version":"0.1.1","language":"javascript","source_language":"en","source_url":null,"tags":["javascript"],"install":[{"cmd":"npm install skulk","lang":"bash","label":"npm"},{"cmd":"yarn add skulk","lang":"bash","label":"yarn"},{"cmd":"pnpm add skulk","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core bundler used for creating JavaScript bundles.","package":"browserify","optional":false},{"reason":"File watcher for Browserify in dev mode.","package":"watchify","optional":true},{"reason":"Livereload server for dev mode.","package":"tiny-lr","optional":true},{"reason":"HTTP server for serving assets and bundles in dev mode.","package":"express","optional":true},{"reason":"Plugin for creating factor bundles (shared dependencies).","package":"factor-bundle","optional":true}],"imports":[{"note":"ESM-only package; CommonJS require is not supported.","wrong":"const skulk = require('skulk')","symbol":"default","correct":"import skulk from 'skulk'"},{"note":"Named export; does not work with CommonJS require.","wrong":"const createBundler = require('skulk').createBundler","symbol":"createBundler","correct":"import { createBundler } from 'skulk'"},{"note":"Import from package directly; no subpath exports.","wrong":"","symbol":"startDevServer","correct":"import { startDevServer } from 'skulk'"},{"note":"TypeScript type export; use `import type` for type-only.","wrong":"","symbol":"SkulkConfig","correct":"import type { SkulkConfig } from 'skulk'"}],"quickstart":{"code":"import skulk from 'skulk';\n\nconst config = {\n  outputDir: './dist',\n  presets: [],\n  bundles: [\n    {\n      name: 'app',\n      entry: './src/index.js',\n      output: 'bundle.js'\n    }\n  ]\n};\n\n// Prod mode\nskulk.build(config).then(() => console.log('done'));\n\n// Dev mode with livereload\nskulk.watch(config).then(server => {\n  console.log('Dev server running on port 3000');\n});","lang":"typescript","description":"Demonstrates basic usage: create a config with one bundle, then call `build` for production or `watch` for dev mode with livereload."},"warnings":[{"fix":"Pin to a specific version and test updates thoroughly.","message":"Skulk is in early development (v0.1.1) and the API is unstable. Many features are not yet implemented (e.g., CSS splitting, multiple bundles, factor-bundle). Expect breaking changes.","severity":"breaking","affected_versions":">=0.0.0"},{"fix":"Use a separate CSS bundler (e.g., split-css) or wait for built-in support.","message":"The `insert-css` dependency is intentionally omitted; CSS handling is planned for future releases.","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Always pass a valid config object with at least `bundles` array and `outputDir`.","message":"Running `skulk.build` without providing required config will throw a TypeError.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Install `watchify` as a dependency.","message":"Watch mode requires `watchify` to be installed separately. missing peer dep may cause silent failures.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use `watch` method for dev server until `startDevServer` is available.","message":"The `startDevServer` function is not yet exported; the API is incomplete. Use `skulk.watch` instead.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Ensure each bundle has a valid `entry` (string) and `output` (string).","cause":"Missing or invalid `entry` or `output` in bundle config.","error":"TypeError: Path must be a string. Received undefined"},{"fix":"Install watchify: `npm install --save-dev watchify`","cause":"watchify is an optional peer dependency not installed.","error":"Error: Cannot find module 'watchify'"},{"fix":"Install browserify: `npm install browserify`","cause":"browserify is a required dependency not installed.","error":"Error: Cannot find module 'browserify'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}