Jon Schlinkert
@jonschlinkert
Son of GitHub. Humble student of @doowb. Creator of @assemble @generate @enquirer @breakdance @update @micromatch
394
Published Tools
38,192
Total Stars
1,803,165,927
Weekly Downloads
4,980
GitHub Followers
867
Public Repos
97/100
Avg Security
Published Tools
1 MCP Server198 Skills1 Agentacross 5 categoriesjonschlinkert
Stylish, intuitive and user-friendly prompt system. Fast and lightweight enough for small projects, powerful and extensible enough for the most advanced use cases.
...moretrysound
Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in one.
rmassaioli
Parse front-matter from a string or file. Fast, reliable and easy to use. Parses YAML front matter by default, but also has support for YAML, JSON, TOML or Coffee Front-Matter, with options to set custom delimiters. Used by metalsmith, assemble, verb and
...morejonschlinkert
Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit
...morejonschlinkert
More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.
...morejonschlinkert
A simple, attractive code quality tool for CSS built on top of LESS
jonschlinkert
Blazing fast and accurate glob matcher written in JavaScript, with no dependencies and full support for standard and extended Bash glob features, including braces, extglobs, POSIX brackets, and regular expressions.
...morejonschlinkert
Easily add ANSI colors to your text and symbols in the terminal. A faster drop-in replacement for chalk, kleur and turbocolor (without the dependencies and rendering bugs).
...morejonschlinkert
Returns true if the given number is odd, and is an integer that does not exceed the JavaScript MAXIMUM_SAFE_INTEGER.
jonschlinkert
Recursively (deep) clone JavaScript native types, like Object, Array, RegExp, Date as well as primitives.
jonschlinkert
Command line tool and developer framework for scaffolding out new GitHub projects. Generate offers the robustness and configurability of Yeoman, the expressiveness and simplicity of Slush, and more powerful flow control and composability than either.
...morejonschlinkert
Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.
jonschlinkert
Bash-like brace expansion, implemented in JavaScript. Safer than other brace expansion libs, with complete support for the Bash 4.3 braces specification, without sacrificing speed.
...morejonschlinkert
Pass two numbers, get a regex-compatible source string for matching ranges. Validated against more than 2.78 million test assertions.
...morejonschlinkert
Easily persist and load config data. No dependencies.
trysound
Returns true if an object was created by the `Object` constructor, or Object.create(null).
jonschlinkert
Some tweaks for beautifying HTML with js-beautify according to my preferences.
jonschlinkert
Be scalable! Update is a new, open source developer framework and CLI for automating updates of any kind in code projects.
...morejonschlinkert
Strip line and/or block comments from a string. Blazing fast, and works with JavaScript, Sass, CSS, Less.js, and a number of other languages.
...morejonschlinkert
Generate any local or global .gitignore file from the github/gitignore repository. Use from the command line when Generate's CLI is installed globally, or use as a plugin or sub-generator in your own generator.
...morejonschlinkert
Normalize slashes in a file path to be posix/unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes, unless disabled.
...morejonschlinkert
Framework for rapidly creating high quality, server-side node.js applications, using plugins like building blocks
jonschlinkert
Fast, minimal glob matcher for node.js. Similar to micromatch, minimatch and multimatch, but complete Bash 4.3 wildcard support only (no support for exglobs, posix brackets or braces)
...morejonschlinkert
Convert a camelcase or space-separated string to a dash-separated string. ~12 sloc, fast, supports diacritics.
jonschlinkert
Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.
...morejonschlinkert
Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. No dependencies.
jonschlinkert
Generic JavaScript helpers that can be used with any template engine. Handlebars, Lo-Dash, Underscore, or any engine that supports helper functions.
...morejonschlinkert
Recursively omit the specified key or keys from an object.
jonschlinkert
Return a copy of an object excluding the given key, or array of keys. Also accepts an optional filter function as the last argument.
...morejonschlinkert
Deeply assign the values of all enumerable-own-properties and symbols from one or more source objects to a target object. Returns the target object.
...morejonschlinkert
Get cross-platform XDG Base Directories or their equivalents. Works with Linux, Windows (win32), or MacOS (darwin).
jonschlinkert
HTML prettifier with options to format HTML according to your own preferences.
jonschlinkert
Recursively omit empty properties from an object. Omits empty objects, arrays, strings or zero.
jonschlinkert
Safely evaluate JavaScript (estree) expressions, sync and async.
jonschlinkert
Parse `.git/config` into a JavaScript object. sync or async.
doowb
System for creating and managing template collections, and rendering templates with any node.js template engine. Can be used as the basis for creating a static site generator or blog framework.
...morejonschlinkert
Remove duplicate values from an array. Fastest ES5 implementation.
jonschlinkert
Fill in a range of numbers or letters, optionally passing an increment or `step` to use, or create a regex-compatible range with `options.toRegex`
...morejonschlinkert
Basic object cache with `get`, `set`, `del`, and `has` methods for node.js/javascript projects.
jonschlinkert
file globbing for node.js. speedy and powerful alternative to node-glob.
jonschlinkert
Easily format the time from node.js `process.hrtime`. Works with timescales ranging from weeks to nanoseconds.
jonschlinkert
Uses esprima to extract line and block comments from a string of JavaScript. Also optionally parses code context (the next line of code after a comment).
...morejonschlinkert
Repeat the given string n times. Fastest implementation for repeating a string.
jonschlinkert
Add context awareness to your apps and frameworks by safely evaluating user-defined conditional expressions. Useful for evaluating expressions in config files, prompts, key bindings, completions, templates, and many other user cases.
...morejonschlinkert
Returns true if the platform is windows. UMD module, works with node.js, commonjs, browser, AMD, electron, etc.
jonschlinkert
Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
...morejonschlinkert
Left pad a string with zeros or a specified string. Fastest implementation.
jonschlinkert
Adds `confirm` (yes/no) prompt support to Enquirer.
jonschlinkert
Write YAML. Converts JSON to YAML writes it to the specified file.
jonschlinkert
Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions.
...morejonschlinkert
Convert HTML entities to HTML characters, e.g. `>` converts to `>`.
jonschlinkert
Iterate over the own and inherited enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js
...morejonschlinkert
The directory used by npm for globally installed npm modules.
jonschlinkert
fs extras and utilities to extend the node.js file system module. Used in Assemble and many other projects.
jonschlinkert
Get the relative filepath from path A to path B. Calculates from file-to-directory, file-to-file, directory-to-file, and directory-to-directory.
...morejonschlinkert
Kickstart documentation for any project! This is the official Yeoman generator for Verb, the zero-configuration markdown docs generator that is extremely easy to use and extend.
...morejonschlinkert
Creates a shallow clone of any JavaScript value.
jonschlinkert
Create a javascript regular expression for matching everything except for the given string.
jonschlinkert
POSIX character classes for creating regular expressions.
jonschlinkert
Does a shallow comparison of two objects, returning false if the keys or values differ.
jonschlinkert
Tiny helpers for creating consistenly-formatted markdown snippets.
jonschlinkert
Grunt plugin for generating a README from templates, including an optional table of contents. No Gruntfile config is necessary, just choose a starter template and you'll be ready to go.
...morejonschlinkert
Modify the names of the own enumerable properties (keys) of an object.
jonschlinkert
Returns true if a filepath exists on the file system and it's directory.
jonschlinkert
Very thin wrapper around js-yaml for directly reading in YAML files.
jonschlinkert
Returns true if a value exists, false if empty. Works with deeply nested values using object paths.
trysound
Adds array support to node-glob, sync and async. Also supports tilde expansion (user home) and resolving to global npm modules.
...morejonschlinkert
Fast, bash-like range expansion. Expand a range of numbers or letters, uppercase or lowercase. Used by micromatch.
jonschlinkert
Tiny wrapper around ansi-colors to add colored symbols and a timestamp.
jonschlinkert
Combines a list of arrays, returning a single array with unique values, using strict equality for comparisons.
jonschlinkert
Get the repository name from the git remote origin URL.
jonschlinkert
Iterate over the own enumerable properties of an object, and return an object with properties that evaluate to true from the callback. Exit early by returning `false`. JavaScript/Node.js.
...morejonschlinkert
Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a few plugins, like 'base-store', 'base-options' and 'base-data'.
...morejonschlinkert
Parse an author, contributor, maintainer or other 'person' string into an object with name, email and url properties following npm conventions.
...morejonschlinkert
Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays.
...morejonschlinkert
Like front-matter, but supports multiple sections in a document.
jonschlinkert
Adds 'smart plugin' support to your base application.
jonschlinkert
Returns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.
...morejonschlinkert
Base prompt module used for creating custom prompts.
jonschlinkert
Multiple-choice/checkbox prompt. Can be used standalone or with a prompt system like [Enquirer].
jonschlinkert
When copying or moving files, it's common for operating systems to automatically add an increment or 'copy' to duplicate file names. This does that for Node.js applications, with automatic platform detection and support for Linux, MacOs, and Windows conve
...morejonschlinkert
Array-slice method. Slices `array` from the `start` index up to, but not including, the `end` index.
jonschlinkert
Extract gfm (GitHub Flavored Markdown) fenced code blocks from a string.
jonschlinkert
Create a matching function from a glob pattern, regex, string, array, object or function.
jonschlinkert
Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object that exposes all of the methods from the data-store library. Also now supports sub-stores!
...morejonschlinkert
Call a specified method on each value in the given object.
jonschlinkert
Visit a method over the items in an object, or map visit over the objects in an array.
jonschlinkert
The core assemble application with no presets or defaults. All configuration is left to the implementor.
jonschlinkert
Utils for working with JavaScript classes and prototype methods.
jonschlinkert
Template engine based on Lo-Dash template, but adds features like the ability to register helpers and more easily set data to be used as context in templates.
...morejonschlinkert
Make a glob pattern absolute, ensuring that negative globs and patterns with trailing slashes are correctly handled.
jonschlinkert
Format, prettify, align, whatever you want to call it. This does that to YAML. Great for making long config files more readable!
...morejonschlinkert
Create an array of multiple choice objects for use in prompts.
jonschlinkert
Assign the enumerable es6 Symbol properties from one or more objects to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.
...morejonschlinkert
Custom mask function for prompt-password that adds a 'strength progress meter' that changes color as the password strength increases. Uses zxcvbn, the popular password strength estimation tool brought to you by dropbox.
...morejonschlinkert
Normalize values in package.json using the map-schema library.
es128
Returns an object with the (non-glob) base path and the actual pattern.
jonschlinkert
Get the username (or 'owner' name) from a git/GitHub remote origin URL.
jonschlinkert
Get the language associated with a file extension or the extensions associated with a language using the data from GitHub's [Linguist YAML file](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml)
...morejonschlinkert
Get the git remote origin URL from your local git repository. Remember! A remote origin must exist first!
jonschlinkert
Returns an array of mapped values from an array or object.
jonschlinkert
Grunt plugin for Verb, the markdown documentation generator with zero-configuration required.
jonschlinkert
Create an object path from a list or array of strings.
jonschlinkert
Regular expression for matching es6 template delimiters in a string.
jonschlinkert
Copy static properties, prototype properties, and descriptors from one object to another.
jonschlinkert
Get the line number for each regex match found in a string.
jonschlinkert
Prompt that autocompletes as you type. Can be used standalone or with a prompt system like [enquirer]
jonschlinkert
Base plugin that provides a very thin wrapper around <https://github.com/doowb/composer> for adding task methods to your Base application.
...morejonschlinkert
Mixin the own and inherited properties of other objects onto the first object. Pass an empty object as the first arg to shallow clone.
...morejonschlinkert
Resolve the path to the user's local or global .gitconfig.
jonschlinkert
Resolve values based on a JSON schema. Supports conditionals and composition. Useful for configuration, preferences, LLM chat completions, etc.
...morejonschlinkert
Extract code comments from string or from a glob of files using esprima.
jonschlinkert
Uses babel (babylon) to extract JavaScript code comments from a JavaScript string or file.
jonschlinkert
Uses snapdragon to tokenize a single JavaScript block comment into an object, with description, tags, and code example sections that can be passed to any other comment parsers for further parsing.
...morejonschlinkert
Plugin for base-methods that adds methods for prompting the user and storing the answers on a project-by-project basis.
jonschlinkert
Loop over each item in an array and call the given function on every element.
jonschlinkert
Faster, node.js focused alternative to JavaScript's native array map.
jonschlinkert
Returns `true` if the path appears to be relative.
jonschlinkert
Right pad a string with zeros or a specified string. Fastest implementation.
jonschlinkert
Temporarily substitute tokens in the given `string` with placeholders, then put them back after transforming the string.
jonschlinkert
Return true if a file path is (or has) a dotfile. Returns false if the path is a dot directory.
jonschlinkert
Radio prompt. Can be used as a standalone prompt, or as a plugin for [Enquirer].
jonschlinkert
Easily get the CWD (current working directory) of a project based on package.json, optionally starting from a given path. (node.js/javascript util)
...morejonschlinkert
Plugin for adding a `pkg` method that exposes pkg-store to your base application.
jonschlinkert
Routing for static site generators, build systems and task runners, heavily based on express.js routes but works with file objects. Used by Assemble, Verb, and Template.
...morejonschlinkert
base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines.
jonschlinkert
RegExp for gfm (GitHub Flavored Markdown) fenced code blocks.
jonschlinkert
Simple API for managing options in JavaScript applications.
jonschlinkert
Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme for the full API.
jonschlinkert
Returns true if the given string is a POSIX bracket expression (POSIX character class).
jonschlinkert
List-style prompt. Can be used as a standalone prompt, or with a prompt system like [enquirer].
jonschlinkert
Basic template helpers for printing messages out to the console. Useful for debugging context in templates. Should work with any template engine.
...morejonschlinkert
Regular expression for parsing an `author` string into an object following npm conventions.
jonschlinkert
Regular expression for getting the root of a posix or windows filepath.
doowb
Get the email address of the current user from git config.
jonschlinkert
Base plugin that adds a getter/setter for the current working directory.
jonschlinkert
Drop-in replacement for `fs.existsSync` with zero dependencies. Other libs I found either have crucial differences from fs.existsSync, or unnecessary dependencies. See README.md for more info.
...morejonschlinkert
Reduces an object to a value that is the accumulated result of running each property in the object through a callback.
jonschlinkert
Reduces an object to a value that is the accumulated result of running each property in the object through a callback. Executes the callback function once for each own enumerable property in the object, receiving four arguments: the initial value (or valu
...morejonschlinkert
Detect potential file system conflicts and if necessary prompt the user before overwriting files.
jonschlinkert
Returns true if a file path does not contain any invalid characters.
jonschlinkert
base-methods plugin that adds a `config` method for mapping declarative configuration values to other 'base' methods or custom functions.
...morejonschlinkert
Plugin that post-processes the object returned from [yargs-parser] so that values can be passed over to base-cli
jonschlinkert
Array of 'yes' words and phrases that express the user's agreement with a statement or request. Intended to be fun and useful for CLI prompts, web forms, etc.
...morejonschlinkert
Fast and simple way to parse code context for use with documentation from code comments. Parses context from a single line of JavaScript, for functions, variable declarations, methods, prototype properties, prototype methods etc.
...morejonschlinkert
Plugin for adding routes support to your `base` application. Requires templates support to work.
jonschlinkert
Convert an argument into a valid iterator. Based on the `.makeIterator()` implementation in mout https://github.com/mout/mout.
...morejonschlinkert
Adds a static `extend` method to a class, to simplify inheritance. Extends the static properties, prototype properties, and descriptors from a `Parent` constructor onto `Child` constructors.
...morejonschlinkert
Write a JSON file to disk, also creates intermediate directories in the destination path if they don't already exist.
jonschlinkert
Generate a markdown-formatted changelog from an object, array, yaml or json file.
jonschlinkert
Normalize an object by running normalizers and validators that are mapped to a schema.
jonschlinkert
Light weight JSON Schema $ref resolver. Expands a JSON Schema by resolving `$ref` references from a mapping of definitions. Does not handle remote references. Has comprehensive unit tests and no dependencies.
...morejonschlinkert
Load templates/views using globs, file paths, objects, arrays, or key-value pairs.
jonschlinkert
Operating systems commonly add a trailing increment, or the word 'copy', or something similar to duplicate files. This strips those increments. Tested on Windows, MacOS, and Linux.
...morejonschlinkert
Loads package.json, by finding the first directory with a package.json, recursing up, starting with the given directory.
jonschlinkert
Convert the process.hrtime() array to a single nanoseconds value. This makes it easier to diff times.
jonschlinkert
Find the first directory with a package.json, recursing up, starting with the given directory. Similar to look-up but does not support globs and only searches for package.json. Async and sync.
...morejonschlinkert
Config store for values that are commonly needed by project scaffolders, like Generate or Yeoman.
jonschlinkert
Front matter parsing middleware based on gray-matter.
jonschlinkert
Find a file fast, by starting at the given cwd and recursing up one directory until the file is found or we run out of directories.
...morejonschlinkert
Thin wrapper around fs.readFile and fs.readFileSync that also strips byte order marks when `utf8` encoding is chosen. Also optionally replaces windows newlines with unix newlines.
...more