{"id":22328726,"url":"https://github.com/seangenabe/shadow","last_synced_at":"2025-07-29T18:31:37.396Z","repository":{"id":26856256,"uuid":"111215964","full_name":"seangenabe/shadow","owner":"seangenabe","description":"Glob files to copy/symlink/hardlink to another directory.","archived":false,"fork":false,"pushed_at":"2023-01-03T15:14:18.000Z","size":910,"stargazers_count":2,"open_issues_count":6,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-17T12:36:10.532Z","etag":null,"topics":["copy","filesystem","fs","glob","hardlink","link","symlink"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seangenabe.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-18T15:23:08.000Z","updated_at":"2021-08-12T18:17:15.000Z","dependencies_parsed_at":"2023-01-14T05:25:16.507Z","dependency_job_id":null,"html_url":"https://github.com/seangenabe/shadow","commit_stats":null,"previous_names":["seangenabe/hardlink"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seangenabe%2Fshadow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seangenabe%2Fshadow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seangenabe%2Fshadow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seangenabe%2Fshadow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seangenabe","download_url":"https://codeload.github.com/seangenabe/shadow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228034824,"owners_count":17859246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["copy","filesystem","fs","glob","hardlink","link","symlink"],"created_at":"2024-12-04T03:13:20.153Z","updated_at":"2024-12-04T03:13:20.650Z","avatar_url":"https://github.com/seangenabe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# shadow\n\n[![npm](https://img.shields.io/npm/v/@seangenabe/shadow.svg?style=flat-square)](https://www.npmjs.com/package/@seangenabe/shadow)\n[![Build Status](https://img.shields.io/travis/seangenabe/shadow/master.svg\u0026style=flat-square)](https://travis-ci.org/seangenabe/shadow)\n[![Coveralls](https://img.shields.io/coveralls/github/seangenabe/shadow.svg?style=flat-square)](https://coveralls.io/github/seangenabe/shadow)\n[![Dependency Status](https://img.shields.io/david/seangenabe/shadow.svg?style=flat-square)](https://david-dm.org/seangenabe/shadow)\n[![devDependency Status](https://img.shields.io/david/dev/seangenabe/shadow.svg?style=flat-square)](https://david-dm.org/seangenabe/shadow#info=devDependencies)\n[![node](https://img.shields.io/node/v/@seangenabe/shadow.svg?style=flat-square)](https://nodejs.org/en/download/)\n\nGlob files and copy/symlink/hardlink in another directory.\n\n## Usage\n\n```javascript\nimport { shadow } from \"@seangenabe/shadow\"\n```\n\n### shadow(pattern, dest, opts)\n\nGlobs the current directory (`opts.cwd || process.cwd()`) and copies, symlinks, or hardlinks the globbed files with the globbed folder structure into dest.\n\nParameters:\n* pattern - array | string - One or more [glob patterns](https://github.com/isaacs/minimatch#usage) to select the files to link\n* dest - the destination directory\n* opts - [options](https://github.com/sindresorhus/globby#options) to pass to `globby`\n  * copyMode - `'symlink' | 'link'` - Symlink or hardlink the files. If unspecified, will simply copy the files.\n  * fallback - Fall back to copying if there aren't enough permissions to symlink or hardlink (`EPERM`).\n\nReturns a promise that resolves when all files have been hardlinked.\n\n## CLI\n\n```\nshadow \u003ccwd\u003e \u003cdest\u003e [pattern = **]\n```\n\nOptions:\n* cwd, dest, pattern - same as above\n* -m --mode - symlink or hardlink the file\n* -f --fallback - fall back to copying the file on EPERM\n\n\n## What happened to `hardlink`?\n\nThis package is modified from `hardlink`'s code and is a superset of its functionality.\n\n## Related\n\n* [copy-newer](https://github.com/seangenabe/copy-newer)\n\n## License \n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseangenabe%2Fshadow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseangenabe%2Fshadow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseangenabe%2Fshadow/lists"}