xdg-app-paths

v8.2.0
Determine (XDG-compatible) paths for storing application files (cache, config, data, etc)
appdir application cache common config cross-platform data directory environment and 18 more...

# build # build/compile package

build

run-s --silent "build:*"

build:cjs

exec-if-updated --source package.json --source tsconfig.json --source "tsconfig/**" --source "rollup.*.config.js" --source "src/**" --target build/.targets/build-cjs.succeeded "run-s -n rebuild:cjs"

build:esm

exec-if-updated --source package.json --source tsconfig.json --source "tsconfig/**" --source "rollup.*.config.js" --source "src/**" --target build/.targets/build-esm.succeeded "run-s -n rebuild:esm"

build:umd

exec-if-updated --source package.json --source tsconfig.json --source "tsconfig/**" --source "rollup.*.config.js" --source "src/**" --target build/.targets/build-umd.succeeded "run-s -n rebuild:umd"

build:lab

exec-if-updated --source package.json --source tsconfig.json --source "tsconfig/**" --source "rollup.*.config.js" --source "src/**" --target build/.targets/build-lab.succeeded "run-s -n rebuild:lab"

build:types

exec-if-updated --source package.json --source tsconfig.json --source "tsconfig/**" --source "rollup.*.config.js" --source "src/**" --target build/.targets/build-types.succeeded "run-s -n rebuild:types"

# clean # remove build artifacts

clean

rimraf build dist

# coverage # calculate and display (or send) code coverage [alias: 'cov']

coverage

run-s --silent +:max-node-8 && shx echo "[coverage] WARN Code coverage skipped [for NodeJS < v10]" 1>&2 || run-s "+:coverage"

cov

run-s coverage

cov:html

nyc report --reporter=html

#* cov:send # use `--cov-send=...` to pass options to coverage uploader

cov:send

shx mkdir -p coverage && nyc report --reporter=text-lcov > "coverage/@coverage.lcov" && cross-env-shell codecov --disable=gcov --file="coverage/@coverage.lcov" $npm_config_cov_send

cov:text

nyc report

cov:view

run-s cov:html && cd coverage && open-cli index.html

dist

run-s update

# fix # fix package issues (automated/non-interactive)

fix

run-s fix:*

# fix:lint # fix ESLint issues

fix:lint

eslint . --fix

# fix:style # fix Prettier formatting issues

fix:style

prettier . --write --list-different

# help # display help

help

run-s --silent _:help

# lint # check for package code 'lint'

lint

run-s --silent +:max-node-8 && shx echo "[lint] WARN Lint checks skipped [for NodeJS < v10]" 1>&2 || run-p --print-name "lint:*"

# lint:commits # check for commit flaws (using `commitlint` and `cspell`)

lint:commits

run-p --silent "_:lint:commits:new:*"

# lint:editorconfig # check for EditorConfig format flaws (using `editorconfig-checker`)

lint:editorconfig

editorconfig-checker -config .ecrc.JS.json

# lint:lint # check for code 'lint' (using `eslint`)

lint:lint

eslint .

# lint:markdown # check for markdown errors (using `remark`)

lint:markdown

remark --quiet .

# lint:spell # check for spelling errors (using `cspell`)

lint:spell

cspell {eg,examples,src,test}/**/* CHANGELOG{,.md,.mkd} README{,.md,.mkd} --no-summary --config ".vscode/cspell.json"

# lint:style # check for format imperfections (using `prettier`)

lint:style

prettier . --check --loglevel warn

# prerelease # clean, rebuild, and fully test (useful prior to publish/release)

prerelease

run-s clean update verify

# realclean # remove all generated files

realclean

run-s clean && rimraf coverage .nyc_output

# rebuild # clean and (re-)build project

rebuild

run-s clean build

rebuild:all

run-s clean build update

rebuild:cjs

shx rm -fr build/cjs && tsc -p tsconfig/tsconfig.cjs.json && shx cp -r src/esm-wrapper build/cjs/src && shx mkdir -p build/.targets && shx touch build/.targets/build-cjs.succeeded

rebuild:esm

shx rm -fr build/esm && tsc -p tsconfig/tsconfig.esm.json && shx cp src/esm-wrapper/package.json build/esm/src && shx mkdir -p build/.targets && shx touch build/.targets/build-esm.succeeded

rebuild:umd

shx rm -fr build/umd && tsc -p tsconfig/tsconfig.umd.json && shx mkdir -p build/.targets && shx touch build/.targets/build-umd.succeeded

rebuild:lab

shx rm -fr build/lab && tsc -p tsconfig/tsconfig.lab.json && shx cp -r src/esm-wrapper build/lab/src && shx mkdir -p build/.targets && shx touch build/.targets/build-lab.succeeded

rebuild:types

shx rm -fr build/types && tsc -p tsconfig/tsconfig.types.json && shx mkdir -p build/.targets && shx touch build/.targets/build-types.succeeded

# refresh # clean and rebuild/regenerate all project artifacts

refresh

run-s rebuild:all

# refresh:dist # clean, rebuild, and regenerate project distribution

refresh:dist

run-s rebuild update:dist

# retest # clean and (re-)test project

retest

run-s clean test

# reset:hard # remove *all* generated files and reinstall dependencies

reset:hard

git clean -dfx && git reset --hard && npm install

# show:deps # show package dependencies

show:deps

run-s --silent _:show:deps:prod _:show:deps:dev || shx true

# test # test package

test

run-s --silent lint update:dist && run-p test:*

# test:code # test package code (use `--test-code=...` to pass options to testing harness)

test:code

run-s --silent +:max-node-8 && cross-env-shell ava $npm_config_test_code || ( run-s --silent +:min-node-10 && cross-env-shell nyc --silent ava $npm_config_test_code )

# test:types # test for type declaration errors (using `tsd`)

test:types

run-s --silent +:max-node-8 && shx echo "[test:types] WARN Type testing skipped [for NodeJS < v10]" 1>&2 || tsd

# update # update/prepare for distribution [alias: 'dist']

update

run-s update:changelog update:dist

# update:changelog # update CHANGELOG (using `git changelog ...`)

update:changelog

run-s --silent _:update:changelog && git diff --quiet --exit-code CHANGELOG.mkd || shx echo "[update] info CHANGELOG updated"

# update:dist # update distribution content

update:dist

run-s --silent build && exec-if-updated --source "build/**" --target "dist/**" --target build/.targets/update-dist.succeeded "run-s --silent _:update:dist:rebuild"

# verify # fully (and verbosely) test package

verify

cross-env npm_config_test_dist=true npm_config_test=--verbose run-s test

## +:... == sub-scripts (may run 'visibly', but not user-facing)

+:coverage

run-s build test:code && is-ci && run-s cov:send || run-s cov:view

+:max-node-8

is-node-not-modern 10

+:min-node-10

is-node-modern 10

## _:... == sub-scripts ('hidden'; generally should be run 'silently' using `run-s/run-p --silent ...`

_:debug:env

node -e "console.log({env: process.env})"

_:exists:git-changelog

node -e "if (!require('command-exists').sync('git-changelog')){process.exit(1);};" || ( shx echo "WARN `git-changelog` missing (try `go get -u github.com/rivy-go/git-changelog/cmd/git-changelog`)" & exit 1 )

* _:help # print usage/TARGETs by matching lines containing leading double-quoted text like `# TARGET_NAME # HELP_TEXT`

_:help

< package.json node -e "s = {p:'',e:'npm'}; if (new String(process.env.npm_execpath).match(/yarn.js$/)) { s = {p:'\n',e:'yarn'}; }; console.log('%susage: \`%s run TARGET\` or \`npx run-s TARGET [TARGET..]\`\n\nTARGETs:\n', s.p, s.e); re = /^.*?\x22(?:#\s*)(\w[^#\x22]*)\s+#+\s+([^\x22]+?)(\s+#+)?\x22.*$/; require('readline').createInterface({ input: process.stdin, output: process.stdout, terminal: false }).on('line', function(line){ if (match = re.exec(line)) { console.log('%s %s', match[1].padEnd(19), match[2]); } });"

_:lint:commits:all:spell

node -e "result=require('child_process').spawnSync('git log --color=never | cspell stdin --no-summary --config ".vscode/cspell.json"',{shell:true,encoding:'utf-8'}); if (result.status != 0) {console.error('[cspell] ERR! Unknown words in commit(s)\n'+result.stdout+'\n'+result.stderr); process.exit(1);} else {console.log(result.stdout);};"

* _:lint:commits:new:... * note: review from 'origin/last' or tag just prior to version-sorted latest, with fallback to first commit

_:lint:commits:new:commitlint

node -e "result=require('child_process').spawnSync('( git tag --list [#v]* --contains origin/last --sort=v:refname || shx true ) && ( git describe --tags --abbrev=0 HEAD~1 || shx true ) && ( git rev-list --max-parents=0 HEAD --abbrev-commit --abbrev=16 || shx true )',{shell:true,encoding:'utf-8'}); o=result.stdout.split(/\r?\n/).filter((s)=>!!s); vs=o; v=vs[0]; result=require('child_process').spawnSync('commitlint --config .commitlint.config.js --from '+v,{shell:true,encoding:'utf-8'}); if (result.status != 0) {console.error('[commitlint] ERR! Flawed commit(s) found (within \'%s..HEAD\')\n'+result.stdout+'\n'+result.stderr, v); process.exit(1);} else { (result.stdout.length > 0) && console.log(result.stdout);};" || shx true

_:lint:commits:new:spell

node -e "result=require('child_process').spawnSync('( git tag --list [#v]* --contains origin/last --sort=v:refname || shx true ) && ( git describe --tags --abbrev=0 HEAD~1 || shx true ) && ( git rev-list --max-parents=0 HEAD --abbrev-commit --abbrev=16 || shx true )',{shell:true,encoding:'utf-8'}); o=result.stdout.split(/\r?\n/).filter((s)=>!!s); vs=o; v=vs[0]; result=require('child_process').spawnSync('git log '+v+'.. --color=never | cspell stdin --no-summary --config ".vscode/cspell.json"',{shell:true,encoding:'utf-8'}); if (result.status != 0) {console.error('[cspell] ERR! Unknown words in commit(s) (within \'%s..HEAD\')\n'+result.stdout+'\n'+result.stderr, v); process.exit(1);} else {(result.stdout.length > 0) && console.log(result.stdout);};" || shx true

_:show:deps:dev

npm --silent ls --only development || shx true

_:show:deps:prod

npm --silent ls --only production || shx true

_:vcs-clean

git diff --quiet

_:vcs-clean-err

run-s --silent _:vcs-clean || ( shx echo "[vcs] ERR! Uncommitted changes" 1>&2 & exit 1 )

_:vcs-strictly-clean

git status --porcelain | node -e "process.stdin.on('data',function(_){process.exit(1);});"

_:vcs-strictly-clean-err

run-s --silent _:vcs-strictly-clean || ( shx echo "[vcs] ERR! Uncommitted changes and/or untracked files" 1>&2 & exit 1 )

_:update:changelog

run-s --silent _:exists:git-changelog && git changelog > CHANGELOG.mkd || shx echo "[update] WARN CHANGELOG not updated" 1>&2

_:update:dist.build

shx rm -fr dist/cjs dist/esm && shx mkdir -p dist/cjs dist/esm && shx cp -r build/cjs/src/* dist/cjs && shx cp -r build/esm/src/* dist/esm

_:update:dist.normalizeEOL

eolConverter lf dist/**/*.{cjs,js,mjs,ts,json}

_:update:dist.pack

node -e "delete process.env.npm_config_dry_run; name=require('./package.json').name; result=require('child_process').spawnSync('npm pack && shx mkdir -p dist && shx mv '+name+'-*.tgz dist/'+name+'.tgz',{shell:true,encoding:'utf-8'}); if (result.status != 0) {console.error('[update] ERR! Unable to package (into *.tgz) for distribution\n'+result.stdout+'\n'+result.stderr); process.exit(1);} else {console.log(result.stdout);};"

_:update:dist.types

shx mkdir -p dist && shx rm -fr dist/types && rollup --config .rollup.config.types.js && replace-in-file "export { _default as default }" "export = _default" dist/types/mod.cjs.d.ts --quiet && shx mkdir -p dist/cjs && shx cp dist/types/*.cjs.d.ts dist/cjs

_:update:dist:rebuild

shx rm -fr dist && run-s --silent _:update:dist.build _:update:dist.types _:update:dist.normalizeEOL _:update:dist.pack && shx mkdir -p dist/.targets && shx touch build/.targets/update-dist.succeeded

_:version:spell:changelog_update

run-s --silent _:exists:git-changelog && git changelog -u | cspell stdin --config ".vscode/cspell.json" || shx echo "[lint] WARN CHANGELOG update `cspell` exception" 1>&2

_:version:update:changelog

run-s --silent _:exists:git-changelog && node -e "v=require('./package.json').version; result=require('child_process').spawnSync('git changelog --next-tag-now --next-tag v'+v,{shell:true,encoding:'utf-8'}); if (result.status != 0) {console.error('ERR! '+result.stderr); process.exit(1);} else {require('fs').writeFileSync('CHANGELOG.mkd',result.stdout);};" || shx echo "[version] WARN CHANGELOG not updated" 1>&2

## npm lifecycle scripts ##

prepublishOnly

run-s clean update && cross-env npm_config_test_dist=true npm run test && run-s --silent update _:vcs-strictly-clean-err

## npm-version scripts ##

preversion

run-s --silent _:version:spell:changelog_update && cross-env npm_config_test_dist=true npm run test

version

run-s --silent _:version:update:changelog && run-s lint:spell && run-s --silent update:dist && git add CHANGELOG.mkd dist

Metadata

  • MIT
  • >= 4.0
  • Roy Ivy III
  • released 8/14/2022

Downloads

Maintainers