shell-quote
1.12.0 · 2 Oct 2026MIT96.3M / weekRepositorynpmAtom feed
34 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
- 1.x · latest line
1.12.0
2 Oct 2026parse: support here-documents (<<)#31parse: support tab-stripping here-documents (<<-)dbfac37parse: support output process substitution (>()2053315
Fixed
parse: support here-documents (<<)#31
Commits
parse: support tab-stripping here-documents (<<-)dbfac37parse: support output process substitution (>()2053315parse: support thecasetest-next terminator (;;&)7d688b9parse: support thecasefall-through terminator (;&)f27010eparse: support redirecting output despitenoclobber(>|)b78d19cparse: support opening a file for reading and writing (<>)21cc333parse: support redirecting stdout and stderr (&>)6ad6cd2parse: support appending stdout and stderr (&>>)90cde9cUpdate
@ljharb/eslint-config3a7b4ae
1.11.0
29 Sep 2026quote: drop a replace that can never match in the single-quote branch#15parse: support bash ANSI-C quoting ($'...')#32quote: reject line terminators in tokens after acomment6002b2e
Fixed
quote: drop a replace that can never match in the single-quote branch#15parse: support bash ANSI-C quoting ($'...')#32
Commits
quote: reject line terminators in tokens after acomment6002b2eparse: preserve text after special shell parameters81b08a5parse: an escaped backslash does not escape the character after itd708019quote: preserve!in arguments that also contain'ad39927parse: treat$_nameas a variable name, not$_followed by text28f88cdquote: preserve empty glob patterns35c9b97quote: escape~in glob patterns to prevent shell tilde-expansion239d49cUpdate
@ljharb/eslint-config,auto-changelog,eslint,evalmdb1e406eNpmignore some files
ebfc308Add permissions
3429b0dSet least-privilege
cache-mode36f2394Update
eslint6de9a41
1.10.0
10 Jul 2026parse: add opt-insplitUnquotedoption for shell field-splitting of unquoted expansions#1parse: match nested${...}braces so nested parameter expansion is consumed as one substitutionc0842c8Remove the space in js code fences so evalmd evaluates them
2116fa3
Merged
parse: add opt-insplitUnquotedoption for shell field-splitting of unquoted expansions#1
Commits
parse: match nested${...}braces so nested parameter expansion is consumed as one substitutionc0842c8Remove the space in js code fences so evalmd evaluates them
2116fa3Document that
quoteoutputs POSIX quoting, notcmd.exe/PowerShell100e96eDocument
parse's supported parameter-expansion subsete1c75cdparse: a backslash inside single quotes must not escape the closing quote5d460a3Fix stale example outputs
2de86f5quote: use output verbatim; do not re-quote it (#11)1b36468parse: fix swappedSINGLE_QUOTE/DOUBLE_QUOTEvariable names801af5cFix an error TS v6 ignores but v7 fails on
59bbf8bUpdate
@arethetypeswrong/cli,evalmda04d475Update
@arethetypeswrong/ci,eslintd390f9a
1.9.0
25 Jun 2026- security
parse: finalize tokens in linear time (GHSA-395f-4hp3-45gv)7ff5488 Add types
dca6e21Update
eslint9aa9e8f
Commits
Add types
dca6e21Update
eslint9aa9e8f- security
parse: finalize tokens in linear time (GHSA-395f-4hp3-45gv)7ff5488 Update workflows
75e8497Windows + node 4/6/7: pin eslint to 9 before install, since npm 2/3 cannot stage eslint 10
@types/esrecurse3fb739dRetry
npm installon Windows to survive npm 2/3 staging-rename flakeabe0163Windows + node 5/7: install deps with a modern node
b4bafa2quote: escape leading~to prevent shell tilde-expansion7a76c1aUpdate
auto-changelog,tape7184b44Apparently
jackspeakis no longer in the graph9ba368a
1.8.4
22 May 2026quote: validate object-token shapes4378a6eUpdate
@ljharb/eslint-config,auto-changelog,eslint,npmignore22ebec0Replace runkit CI badge with shields.io check-runs badge
3344a04
Commits
quote: validate object-token shapes4378a6eUpdate
@ljharb/eslint-config,auto-changelog,eslint,npmignore22ebec0Replace runkit CI badge with shields.io check-runs badge
3344a04Update
@ljharb/eslint-config699c511
1.8.2
27 Nov 2024Fixed
quote: preserve empty strings#18
Commits
Fix changelog tags
0fb9fd8Split out node 10-20, and 20+
819bd84Update
@ljharb/eslint-config,auto-changelog,npmignore,tapefc56408Update npm for windows tests
fdeb0fdUpdate
@ljharb/eslint-config,aud,tapeb8a4a3bPrevent node 14 on ARM mac from failing
9eecafcExclude more files from the package
4044e7fAdd missing
engines.node843820eAdd missing peer dep
4c3b88dPin
jackspeaksince 2.1.2+ depends on npm aliases, which kill the install process in npm < 680322ed
1.8.0
31 Jan 20231.7.4
13 Oct 2022Merged
Add node_modules to .gitignore
#48
Commits
Fix indentation and whitespace
aaa9d1fAdditional cleanup
397cb62Add
auto-changelog497fca5Add reusable workflows
4763c36Add eslint
6ee1437Rename, add badges
7eb5134Update URLs
67381b6Create FUNDING.yml; add
fundingin package.json8641572Use
npmignoreto autogenerate an npmignore file2e2007aOnly apps should have lockfiles
f97411eUpdate
tape051f608Add
safe-publish-latest18cadf9
1.7.3
21 Oct 2021- security
Fix a security issue where the regex for windows drive letters allowed some shell meta-characters to escape the quoting rules. (CVE-2021-42740)
1.7.2
1 Sep 2019Fix a regression introduced in 1.6.3. This reverts the Windows path quoting fix.
1.4.0
18 Oct 20131.3.2
24 Jun 2013Tests for setting env vars
f44b039Fixed the parse test, broke the op tests
74d6686Factored out single and double quote regex
de9e0a5
Commits
Tests for setting env vars
f44b039Fixed the parse test, broke the op tests
74d6686Factored out single and double quote regex
de9e0a5Updated set env test, already passes
7d5636bOps fixed
2b4e1b1Passing all tests
44177e3Backreferences in negated capture groups don't actually work
e189d9dAnother crazy ridiculous passing parse test
d1beb6b
1.3.0
13 May 2013Hacky tokenizer is much simpler
7e91b18Nearly passing with a clunky state env parser, array issues
d6d6416Test for functional env expansion
666395f
Commits
Hacky tokenizer is much simpler
7e91b18Nearly passing with a clunky state env parser, array issues
d6d6416Test for functional env expansion
666395fUpgrade travis versions, tape
f6f8bd61.3.0, document env() lookups
041c5daFirst half of functional env() works
7a0cf79env() objects even work inside quote strings
16139f5Another check just to make sure env() works
914a1a9
1.0.0
13 May 2013Document ops, op example
a6381e6Some more passing double-char op tests
fbc6e5cLabeled regex states
8c008b2
Commits
Document ops, op example
a6381e6Some more passing double-char op tests
fbc6e5cLabeled regex states
8c008b2Refactored the chunker regex into a string
0331c7fSimple failing double-char op test
e51fa90Failing expanded single-op tests for ; and ()
710bb24Now passing all the single-char op tests
e3e9ac1Using the control ops directly from the docs
f535987First part of op parsing works
e6f9199Failing redirect tests
cb94c10Another double-char op test just to be sure
5cf1bf21.0.0 for ops
17a40edAdding redirect <> ops to CONTROL makes the tests pass
48b1eb9double-char op test now passing
3998b0fUsing the meta chars directly from the docs
b009ef6The spec says tabs are also allowed
2adb373Op test completely passing
20a0147
- 0.1.x
0.1.0
15 Apr 2013Externalize the regex declaration
37d6058Modernize the readme
24106f5Factor out interpolation
1b21b01
Commits
Externalize the regex declaration
37d6058Modernize the readme
24106f5Factor out interpolation
1b21b01Half the env tests are working with basic interpolation
5891471Env parse example
5757c42Denormalize the interpolate logic to make room for special cases
c669d2eCleaner implementation recursing on the double quote case
adae66fOne test was wrong, checking for pre escapes
42b5f83Finally passing all the tests
efa4084One more test passing with quote recursion
e9537b9Use tape everywhere
ed0c1c6Some extra metacharacter tests just to be sure
a6782aeMinor fix to an env test
601b340Document parse env
cc0efbaBetter parse recursion to capture the containing quotes
8467961Now just 2 tests failing with a subtle regex reordering
5448a02Pass another test by using "" as the undefined
46e6cf4Fixed a failing env test
17d1fdaActually the test was wrong, module works fine
9d7b727Another test to be even more sure
5afd47b
- 0.0.x
0.0.0
18 May 2012