Catalog npm
Back to packageRELEASE DETAILS

3.3.0

npm

@-xun/symbiote

The scripts and assets powering Xunnamius's NPM-based projects

xunnamius
Published22 Feb 2025
Direct dependencies140
Transitive dependenciesNot calculated

README

Current package documentation

Eddie Brock is your repo 🕸️ This tool is the suit


Black Lives Matter! Last commit timestamp Codecov Source license Uses Semantic Release!

NPM version Monthly Downloads


symbiote (@-xun/symbiote)

Formerly xscripts (@-xun/scripts)

Symbiote is a highly-opinionated personal tool that supercharges 🕷️ all my NPM-based projects. It can also exist symbiotically within foreign repositories (e.g. when I'm contributing to open source), glomming onto clones and granting me some semblance of the powers I'm used to in my own projects. All without requiring changes to any of the foreign repository's files.

Symbiote is similar in intent to kcd-scripts, react-scripts, etc, but with many more opinions.

Motivation

I have three main goals with symbiote:

I. Concentrate the configuration explosion inherent in the modern JS ecosystem into one centralized location. That's symbiote. Reuse as much configuration from symbiote as possible. Spend as little time as possible tweaking configuration in repositories outside of symbiote. No more ugly package.json files filled with unreadable spaghetti scripts. Never have to worry about cross-environment concerns—symbiote works on both Linux and Windows.

Make it easy and quick integrate shiny new tooling into symbiote as the JS ecosystem changes. And when that same tooling falls out of fashion or is superseded, make it painless to augment, upgrade, or discard that same tooling, or replace it with an entirely different tool, across all projects using symbiote.

Projects that have tight integrations with tooling that ends up changing incompatibly or getting replaced have the option to pin the version of symbiote they require while other projects can continue to evolve as symbiote and the JS ecosystem does.


II. Minimize to near zero the context switching penalty I incur when shifting focus between projects. Especially open source. Keep coding fun after coding for work. Prevent burnout. Never be discouraged from returning to a very old project. Make each dev environment some level of predictable and familiar.


III. Standardize my opinion of an ideal toolchain, build process, and release flow. Reduce the complexity of managing CI/CD pipelines (i.e. GitHub Actions + xrelease) across a constellation of projects, and centralize the remaining complexity into xpipeline.

Make it super simple and unintimidating for others to contribute to symbiote-powered projects. Contributions can be made without the contributor ever knowing symbiote is there. "Continuous linting" tools like Husky, and npm scripts with standard names like "test" and "build", invoke symbiote when necessary. Symbiote encapsulates and hides the sprawling complexity of the JS ecosystem behind a stable-but-highly-opinionated API and CLI.



Install

You can install this package globally:

npm install --global @-xun/symbiote

And then execute the CLI:

npx symbiote ...

Alternatively, you can use npx to execute the CLI without pre-installation:

npx @-xun/symbiote ...

Usage

TODO

Appendix

Further documentation can be found under docs/.

Published Package Details

This is a CJS2 package with statically-analyzable exports built by Babel for use in Node.js versions that are not end-of-life. For TypeScript users, this package supports both "Node10" and "Node16" module resolution strategies.

Expand details

That means both CJS2 (via require(...)) and ESM (via import { ... } from ... or await import(...)) source will load this package from the same entry points when using Node. This has several benefits, the foremost being: less code shipped/smaller package size, avoiding dual package hazard entirely, distributables are not packed/bundled/uglified, a drastically less complex build process, and CJS consumers aren't shafted.

Each entry point (i.e. ENTRY) in package.json's exports[ENTRY] object includes one or more export conditions. These entries may or may not include: an exports[ENTRY].types condition pointing to a type declaration file for TypeScript and IDEs, a exports[ENTRY].module condition pointing to (usually ESM) source for Webpack/Rollup, a exports[ENTRY].node and/or exports[ENTRY].default condition pointing to (usually CJS2) source for Node.js require/import and for browsers and other environments, and other conditions not enumerated here. Check the package.json file to see which export conditions are supported.

Note that, regardless of the { "type": "..." } specified in package.json, any JavaScript files written in ESM syntax (including distributables) will always have the .mjs extension. Note also that package.json may include the sideEffects key, which is almost always false for optimal tree shaking where appropriate.

License

See LICENSE.

Contributing and Support

New issues and pull requests are always welcome and greatly appreciated! 🤩 Just as well, you can star 🌟 this project to let me know you found it useful! ✊🏿 Or buy me a beer, I'd appreciate it. Thank you!

See CONTRIBUTING.md and SUPPORT.md for more information.

Contributors

All Contributors

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 140

Native requirements
140 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
glob
Environment
{
  "local_name": "glob",
  "alias": false,
  "peer_metadata": null
}
^11.0.1runtime
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^30.0.0-alpha.6runtime
husky
Environment
{
  "local_name": "husky",
  "alias": false,
  "peer_metadata": null
}
^9.1.7runtime
doctoc
Environment
{
  "local_name": "doctoc",
  "alias": false,
  "peer_metadata": null
}
^2.2.1runtime
dotenv
Environment
{
  "local_name": "dotenv",
  "alias": false,
  "peer_metadata": null
}
^16.4.7runtime
eslint
Environment
{
  "local_name": "eslint",
  "alias": false,
  "peer_metadata": null
}
^9.21.0runtime
rimraf
Environment
{
  "local_name": "rimraf",
  "alias": false,
  "peer_metadata": null
}
^6.0.1runtime
semver
Environment
{
  "local_name": "semver",
  "alias": false,
  "peer_metadata": null
}
^7.7.1runtime
core-js
Environment
{
  "local_name": "core-js",
  "alias": false,
  "peer_metadata": null
}
^3.40.0runtime
globals
Environment
{
  "local_name": "globals",
  "alias": false,
  "peer_metadata": null
}
^16.0.0runtime
tstyche
Environment
{
  "local_name": "tstyche",
  "alias": false,
  "peer_metadata": null
}
^3.5.0runtime
typedoc
Environment
{
  "local_name": "typedoc",
  "alias": false,
  "peer_metadata": null
}
^0.27.8runtime
@-xun/fs
Environment
{
  "local_name": "@-xun/fs",
  "alias": false,
  "peer_metadata": null
}
^1.0.0runtime
prettier
Environment
{
  "local_name": "prettier",
  "alias": false,
  "peer_metadata": null
}
^3.5.2runtime
@-xun/cli
Environment
{
  "local_name": "@-xun/cli",
  "alias": false,
  "peer_metadata": null
}
^1.1.2runtime
@-xun/run
Environment
{
  "local_name": "@-xun/run",
  "alias": false,
  "peer_metadata": null
}
^1.0.3runtime
find-up
Environment
{
  "local_name": "find-up~5",
  "alias": true,
  "peer_metadata": null
}
npm:find-up@^5.0.0runtime
rejoinder
Environment
{
  "local_name": "rejoinder",
  "alias": false,
  "peer_metadata": null
}
^1.2.5runtime
type-fest
Environment
{
  "local_name": "type-fest",
  "alias": false,
  "peer_metadata": null
}
^4.35.0runtime
@-xun/jest
Environment
{
  "local_name": "@-xun/jest",
  "alias": false,
  "peer_metadata": null
}
^1.1.5runtime
@babel/cli
Environment
{
  "local_name": "@babel/cli",
  "alias": false,
  "peer_metadata": null
}
^7.26.4runtime
@eslint/js
Environment
{
  "local_name": "@eslint/js",
  "alias": false,
  "peer_metadata": null
}
^9.21.0runtime
babel-jest
Environment
{
  "local_name": "babel-jest",
  "alias": false,
  "peer_metadata": null
}
nextruntime
dotenv-cli
Environment
{
  "local_name": "dotenv-cli",
  "alias": false,
  "peer_metadata": null
}
^8.0.0runtime
lodash.get
Environment
{
  "local_name": "lodash.get",
  "alias": false,
  "peer_metadata": null
}
^4.4.2runtime
remark-cli
Environment
{
  "local_name": "remark-cli",
  "alias": false,
  "peer_metadata": null
}
^12.0.1runtime
remark-gfm
Environment
{
  "local_name": "remark-gfm",
  "alias": false,
  "peer_metadata": null
}
^4.0.1runtime
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5.7.3runtime
@babel/core
Environment
{
  "local_name": "@babel/core",
  "alias": false,
  "peer_metadata": null
}
^7.26.9runtime
@types/jest
Environment
{
  "local_name": "@types/jest",
  "alias": false,
  "peer_metadata": null
}
^29.5.14runtime
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^22.13.5runtime
askpassword
Environment
{
  "local_name": "askpassword",
  "alias": false,
  "peer_metadata": null
}
^2.0.2runtime
jest-circus
Environment
{
  "local_name": "jest-circus",
  "alias": false,
  "peer_metadata": null
}
30.0.0-alpha.6runtime
lint-staged
Environment
{
  "local_name": "lint-staged",
  "alias": false,
  "peer_metadata": null
}
^15.4.3runtime
remark-lint
Environment
{
  "local_name": "remark-lint",
  "alias": false,
  "peer_metadata": null
}
^10.0.1runtime
@types/react
Environment
{
  "local_name": "@types/react",
  "alias": false,
  "peer_metadata": null
}
^19.0.10runtime
lodash.clone
Environment
{
  "local_name": "lodash.clone",
  "alias": false,
  "peer_metadata": null
}
^4.5.0runtime
@-xun/memoize
Environment
{
  "local_name": "@-xun/memoize",
  "alias": false,
  "peer_metadata": null
}
^1.1.0runtime
@-xun/project
Environment
{
  "local_name": "@-xun/project",
  "alias": false,
  "peer_metadata": null
}
^1.0.2runtime
@octokit/rest
Environment
{
  "local_name": "@octokit/rest",
  "alias": false,
  "peer_metadata": null
}
^21.1.1runtime
@types/eslint
Environment
{
  "local_name": "@types/eslint",
  "alias": false,
  "peer_metadata": null
}
^9.6.1runtime
@types/semver
Environment
{
  "local_name": "@types/semver",
  "alias": false,
  "peer_metadata": null
}
^7.5.8runtime
jest-extended
Environment
{
  "local_name": "jest-extended",
  "alias": false,
  "peer_metadata": null
}
^4.0.2runtime
remark-ignore
Environment
{
  "local_name": "remark-ignore",
  "alias": false,
  "peer_metadata": null
}
^2.0.0runtime
@eslint/compat
Environment
{
  "local_name": "@eslint/compat",
  "alias": false,
  "peer_metadata": null
}
^1.2.7runtime
glob-gitignore
Environment
{
  "local_name": "glob-gitignore",
  "alias": false,
  "peer_metadata": null
}
^1.0.15runtime
unified-engine
Environment
{
  "local_name": "unified-engine",
  "alias": false,
  "peer_metadata": null
}
^11.2.2runtime
@-xun/changelog
Environment
{
  "local_name": "@-xun/changelog",
  "alias": false,
  "peer_metadata": null
}
^1.0.2runtime
@commitlint/cli
Environment
{
  "local_name": "@commitlint/cli",
  "alias": false,
  "peer_metadata": null
}
^19.7.1runtime
eslint-plugin-n
Environment
{
  "local_name": "eslint-plugin-n",
  "alias": false,
  "peer_metadata": null
}
^17.15.1runtime
toss-expression
Environment
{
  "local_name": "toss-expression",
  "alias": false,
  "peer_metadata": null
}
^0.1.2runtime
unique-filename
Environment
{
  "local_name": "unique-filename",
  "alias": false,
  "peer_metadata": null
}
^4.0.0runtime
@eslint/eslintrc
Environment
{
  "local_name": "@eslint/eslintrc",
  "alias": false,
  "peer_metadata": null
}
^3.3.0runtime
lodash.mergewith
Environment
{
  "local_name": "lodash.mergewith",
  "alias": false,
  "peer_metadata": null
}
^4.6.2runtime
named-app-errors
Environment
{
  "local_name": "named-app-errors",
  "alias": false,
  "peer_metadata": null
}
^4.0.2runtime
@-xun/release
Environment
{
  "local_name": "semantic-release",
  "alias": true,
  "peer_metadata": null
}
npm:@-xun/release@^24.2.2runtime
@babel/preset-env
Environment
{
  "local_name": "@babel/preset-env",
  "alias": false,
  "peer_metadata": null
}
^7.26.9runtime
@types/lodash.get
Environment
{
  "local_name": "@types/lodash.get",
  "alias": false,
  "peer_metadata": null
}
^4.4.9runtime
npm-check-updates
Environment
{
  "local_name": "npm-check-updates",
  "alias": false,
  "peer_metadata": null
}
^17.1.14runtime
sort-package-json
Environment
{
  "local_name": "sort-package-json",
  "alias": false,
  "peer_metadata": null
}
^2.14.0runtime
typescript-eslint
Environment
{
  "local_name": "typescript-eslint",
  "alias": false,
  "peer_metadata": null
}
^8.24.1runtime
eslint-plugin-jest
Environment
{
  "local_name": "eslint-plugin-jest",
  "alias": false,
  "peer_metadata": null
}
^28.11.0runtime
libsodium-wrappers
Environment
{
  "local_name": "libsodium-wrappers",
  "alias": false,
  "peer_metadata": null
}
^0.7.15runtime
remark-frontmatter
Environment
{
  "local_name": "remark-frontmatter",
  "alias": false,
  "peer_metadata": null
}
^5.0.0runtime
@babel/preset-react
Environment
{
  "local_name": "@babel/preset-react",
  "alias": false,
  "peer_metadata": null
}
^7.26.3runtime
@types/lodash.clone
Environment
{
  "local_name": "@types/lodash.clone",
  "alias": false,
  "peer_metadata": null
}
^4.5.9runtime
remark-lint-no-tabs
Environment
{
  "local_name": "remark-lint-no-tabs",
  "alias": false,
  "peer_metadata": null
}
^4.0.1runtime
@babel/eslint-parser
Environment
{
  "local_name": "@babel/eslint-parser",
  "alias": false,
  "peer_metadata": null
}
^7.26.8runtime
all-contributors-cli
Environment
{
  "local_name": "all-contributors-cli",
  "alias": false,
  "peer_metadata": null
}
^6.26.1runtime
@-xun/eslint-plugin-import-experimental
Environment
{
  "local_name": "eslint-plugin-import",
  "alias": true,
  "peer_metadata": null
}
npm:@-xun/eslint-plugin-import-experimental@^2.32.0runtime
jest-silent-reporter
Environment
{
  "local_name": "jest-silent-reporter",
  "alias": false,
  "peer_metadata": null
}
^0.6.0runtime
lodash.clonedeepwith
Environment
{
  "local_name": "lodash.clonedeepwith",
  "alias": false,
  "peer_metadata": null
}
^4.5.0runtime
@arethetypeswrong/cli
Environment
{
  "local_name": "@arethetypeswrong/cli",
  "alias": false,
  "peer_metadata": null
}
^0.17.4runtime
@octokit/plugin-retry
Environment
{
  "local_name": "@octokit/plugin-retry",
  "alias": false,
  "peer_metadata": null
}
^7.1.4runtime
@semantic-release/git
Environment
{
  "local_name": "@semantic-release/git",
  "alias": false,
  "peer_metadata": null
}
^10.0.1runtime
bidirectional-resolve
Environment
{
  "local_name": "bidirectional-resolve",
  "alias": false,
  "peer_metadata": null
}
^1.0.2runtime
eslint-plugin-unicorn
Environment
{
  "local_name": "eslint-plugin-unicorn",
  "alias": false,
  "peer_metadata": null
}
^57.0.0runtime
remark-tight-comments
Environment
{
  "local_name": "remark-tight-comments",
  "alias": false,
  "peer_metadata": null
}
^2.0.0runtime
remark-validate-links
Environment
{
  "local_name": "remark-validate-links",
  "alias": false,
  "peer_metadata": null
}
^13.1.0runtime
@semantic-release/exec
Environment
{
  "local_name": "@semantic-release/exec",
  "alias": false,
  "peer_metadata": null
}
^7.0.3runtime
escape-string-regexp
Environment
{
  "local_name": "escape-string-regexp~4",
  "alias": true,
  "peer_metadata": null
}
npm:escape-string-regexp@^4.0.0runtime
mdast-util-to-markdown
Environment
{
  "local_name": "mdast-util-to-markdown",
  "alias": false,
  "peer_metadata": null
}
^2.1.2runtime
remark-reference-links
Environment
{
  "local_name": "remark-reference-links",
  "alias": false,
  "peer_metadata": null
}
^7.0.0runtime
@types/eslint__eslintrc
Environment
{
  "local_name": "@types/eslint__eslintrc",
  "alias": false,
  "peer_metadata": null
}
^2.1.2runtime
@types/lodash.mergewith
Environment
{
  "local_name": "@types/lodash.mergewith",
  "alias": false,
  "peer_metadata": null
}
^4.6.9runtime
remark-sort-definitions
Environment
{
  "local_name": "remark-sort-definitions",
  "alias": false,
  "peer_metadata": null
}
^2.0.0runtime
typedoc-plugin-markdown
Environment
{
  "local_name": "typedoc-plugin-markdown",
  "alias": false,
  "peer_metadata": null
}
^4.4.2runtime
@babel/preset-typescript
Environment
{
  "local_name": "@babel/preset-typescript",
  "alias": false,
  "peer_metadata": null
}
^7.26.0runtime
@types/babel__preset-env
Environment
{
  "local_name": "@types/babel__preset-env",
  "alias": false,
  "peer_metadata": null
}
^7.10.0runtime
rejoinder-github-actions
Environment
{
  "local_name": "rejoinder-github-actions",
  "alias": false,
  "peer_metadata": null
}
^1.0.3runtime
remark-lint-no-empty-url
Environment
{
  "local_name": "remark-lint-no-empty-url",
  "alias": false,
  "peer_metadata": null
}
^4.0.1runtime
@types/libsodium-wrappers
Environment
{
  "local_name": "@types/libsodium-wrappers",
  "alias": false,
  "peer_metadata": null
}
^0.7.14runtime
confusing-browser-globals
Environment
{
  "local_name": "confusing-browser-globals",
  "alias": false,
  "peer_metadata": null
}
^1.0.11runtime
remark-lint-final-newline
Environment
{
  "local_name": "remark-lint-final-newline",
  "alias": false,
  "peer_metadata": null
}
^3.0.1runtime
@octokit/plugin-throttling
Environment
{
  "local_name": "@octokit/plugin-throttling",
  "alias": false,
  "peer_metadata": null
}
^9.4.0runtime
remark-capitalize-headings
Environment
{
  "local_name": "remark-capitalize-headings",
  "alias": false,
  "peer_metadata": null
}
^2.0.1runtime
remark-lint-file-extension
Environment
{
  "local_name": "remark-lint-file-extension",
  "alias": false,
  "peer_metadata": null
}
^3.0.1runtime
remark-renumber-references
Environment
{
  "local_name": "remark-renumber-references",
  "alias": false,
  "peer_metadata": null
}
^2.0.0runtime
@types/lodash.clonedeepwith
Environment
{
  "local_name": "@types/lodash.clonedeepwith",
  "alias": false,
  "peer_metadata": null
}
^4.5.9runtime
remark-lint-definition-case
Environment
{
  "local_name": "remark-lint-definition-case",
  "alias": false,
  "peer_metadata": null
}
^4.0.1runtime

Showing the first 100 declarations.

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "4847e4b96e62a01118b41f3bd551c3880187f369",
  "tarball": "https://registry.npmjs.org/@-xun/symbiote/-/symbiote-3.3.0.tgz",
  "fileCount": 14090,
  "integrity": "sha512-TAEvQBYlZ9VFnTrpziC8vEHNQ0lZ8gXXkxzfjAd5ZmcSRv5nvPvDnMls8JzK8uUB2QM1q/PnylDqUF7d8304sA==",
  "signatures": [
    {
      "sig": "MEUCIGAG85QNiULm5yv+p2YVrreWFqcOhcfO17INEI4taJONAiEA7XM6SwrvLOCnRJcdEzwe1vUxhcjGGo46k8Wfodtkq4g=",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "unpackedSize": 39264773
}

Repository

PENDING
xunnamius/symbiote

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 21:52 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:a4c7ea19d46cf4b14472cfacdf6bc9a804930fa15ea4ea87fc2b04b941b203da

Other collected versions

4.15.103 May4.15.93 May4.15.83 May4.15.73 May4.15.622 Mar4.15.522 MarView all collected versions →