A specialized build tool for creating Svelte component libraries and packages
—
File system operations including directory creation, recursive deletion, and file copying with cross-platform path handling.
Creates directories recursively, similar to mkdir -p.
/**
* Create directory recursively
* @param dir - Directory path to create
*/
function mkdirp(dir: string): void;Usage Examples:
import { mkdirp } from "@sveltejs/package/src/filesystem.js";
// Create nested directories
mkdirp("dist/types/components");
// Create single directory
mkdirp("temp");Removes files and directories recursively, similar to rm -rf.
/**
* Remove directory or file recursively
* @param path - Path to remove
*/
function rimraf(path: string): void;Usage Examples:
import { rimraf } from "@sveltejs/package/src/filesystem.js";
// Remove directory and all contents
rimraf("dist");
// Remove single file
rimraf("temp/file.txt");Converts Windows-style paths to POSIX-style paths for consistent path handling.
/**
* Convert Windows paths to POSIX format
* @param str - Path string to convert
* @returns POSIX-style path
*/
function posixify(str: string): string;Usage Examples:
import { posixify } from "@sveltejs/package/src/filesystem.js";
// Convert Windows path
const windowsPath = "src\\lib\\components\\Button.svelte";
const posixPath = posixify(windowsPath);
// Result: "src/lib/components/Button.svelte"
// POSIX paths are unchanged
const alreadyPosix = "src/lib/index.js";
const stillPosix = posixify(alreadyPosix);
// Result: "src/lib/index.js"Recursively walks a directory and returns all file and directory paths.
/**
* Recursively walk directory and return all paths
* @param cwd - Directory to walk
* @param dirs - Whether to include directories in results (default: false)
* @returns Array of relative paths
*/
function walk(cwd: string, dirs?: boolean): string[];Usage Examples:
import { walk } from "@sveltejs/package/src/filesystem.js";
// Get all files
const files = walk("src/lib");
// Result: ["index.js", "components/Button.svelte", "utils/helpers.js"]
// Get files and directories
const all = walk("src/lib", true);
// Result: ["index.js", "components", "components/Button.svelte", "utils", "utils/helpers.js"]Copies files or directories from source to target with optional filtering and replacement.
/**
* Copy files or directories
* @param source - Source path
* @param target - Target path
* @param opts - Copy options
* @returns Array of copied file paths
*/
function copy(source: string, target: string, opts?: CopyOptions): string[];
interface CopyOptions {
filter?: (basename: string) => boolean;
replace?: Record<string, string>;
}Usage Examples:
import { copy } from "@sveltejs/package/src/filesystem.js";
// Copy single file
const files = copy("src/index.js", "dist/index.js");
// Result: ["index.js"]
// Copy directory
const copiedFiles = copy("src/assets", "dist/assets");
// Result: ["logo.png", "styles.css", "fonts/main.woff"]
// Copy with filter (exclude test files)
const filtered = copy("src", "dist", {
filter: (basename) => !basename.endsWith('.test.js')
});
// Copy with string replacements
const replaced = copy("src/lib", "dist/lib", {
replace: {
'development': 'production',
'localhost': 'example.com'
}
});The file system utilities handle cross-platform directory operations:
mkdirp creates parent directories as neededrimraf safely removes directories with all contentswalk traverses directory trees with optional directory inclusioncopy handles both individual files and directory treesposixify ensures consistent path separatorsAll utilities handle platform differences:
The file system utilities handle common error conditions:
mkdirp creates intermediate directoriescopy and rimraf handle missing source paths gracefullyinterface CopyOptions {
filter?: (basename: string) => boolean;
replace?: Record<string, string>;
}Install with Tessl CLI
npx tessl i tessl/npm-sveltejs--package