{"id":13445860,"url":"https://github.com/gulpjs/vinyl-fs","last_synced_at":"2025-12-17T04:50:05.942Z","repository":{"id":12682886,"uuid":"15355019","full_name":"gulpjs/vinyl-fs","owner":"gulpjs","description":"Vinyl adapter for the file system.","archived":false,"fork":false,"pushed_at":"2025-06-01T21:41:10.000Z","size":808,"stargazers_count":970,"open_issues_count":7,"forks_count":155,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-11-04T07:14:11.625Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/gulpjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["gulpjs","phated","yocontra"],"tidelift":"npm/gulp","open_collective":"gulpjs"}},"created_at":"2013-12-21T06:40:44.000Z","updated_at":"2025-10-28T03:03:09.000Z","dependencies_parsed_at":"2023-01-13T17:05:02.162Z","dependency_job_id":"b1da4b6a-6093-417c-87a5-a9ec09939015","html_url":"https://github.com/gulpjs/vinyl-fs","commit_stats":{"total_commits":313,"total_committers":55,"mean_commits":"5.6909090909090905","dds":0.670926517571885,"last_synced_commit":"ad025afed42f70a064801180185b500235d5272a"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/gulpjs/vinyl-fs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gulpjs%2Fvinyl-fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gulpjs%2Fvinyl-fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gulpjs%2Fvinyl-fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gulpjs%2Fvinyl-fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gulpjs","download_url":"https://codeload.github.com/gulpjs/vinyl-fs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gulpjs%2Fvinyl-fs/sbom","scorecard":{"id":449199,"data":{"date":"2025-08-11","repo":{"name":"github.com/gulpjs/vinyl-fs","commit":"02e9373d05fd783caeb9223acfacf2c032ca8710"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Maintained","score":5,"reason":"6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 6/27 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/dev.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/dev.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/dev.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/dev.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/dev.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/dev.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/dev.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dev.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/dev.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/gulpjs/vinyl-fs/release.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/dev.yml:51","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/gulpjs/.github/SECURITY.md:1","Info: Found linked content: github.com/gulpjs/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/gulpjs/.github/SECURITY.md:1","Info: Found text in security policy: github.com/gulpjs/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T07:43:04.159Z","repository_id":12682886,"created_at":"2025-08-19T07:43:04.159Z","updated_at":"2025-08-19T07:43:04.159Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27777285,"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","status":"online","status_checked_at":"2025-12-17T02:00:08.291Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-07-31T05:00:40.787Z","updated_at":"2025-12-17T04:50:05.920Z","avatar_url":"https://github.com/gulpjs.png","language":"JavaScript","funding_links":["https://github.com/sponsors/gulpjs","https://github.com/sponsors/phated","https://github.com/sponsors/yocontra","https://tidelift.com/funding/github/npm/gulp","https://opencollective.com/gulpjs"],"categories":["第三方库介绍","Repository","JavaScript","File System"],"sub_categories":["文件管理","Filesystem","[`level-vinyl`][level-vinyl]"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gulpjs.com\"\u003e\n    \u003cimg height=\"257\" width=\"114\" src=\"https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# vinyl-fs\n\n[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][ci-image]][ci-url] [![Coveralls Status][coveralls-image]][coveralls-url]\n\n[Vinyl][vinyl] adapter for the file system.\n\n## What is Vinyl?\n\n[Vinyl][vinyl] is a very simple metadata object that describes a file. When you think of a file, two attributes come to mind: `path` and `contents`. These are the main attributes on a [Vinyl][vinyl] object. A file does not necessarily represent something on your computer’s file system. You have files on S3, FTP, Dropbox, Box, CloudThingly.io and other services. [Vinyl][vinyl] can be used to describe files from all of these sources.\n\n## What is a Vinyl Adapter?\n\nWhile Vinyl provides a clean way to describe a file, we now need a way to access these files. Each file source needs what we call a \"Vinyl adapter\". A Vinyl adapter simply exposes a `src(globs)` and a `dest(folder)` method. Each return a stream. The `src` stream produces Vinyl objects, and the `dest` stream consumes Vinyl objects. Vinyl adapters can expose extra methods that might be specific to their input/output medium, such as the `symlink` method `vinyl-fs` provides.\n\n## Usage\n\n```javascript\nvar map = require('map-stream');\nvar vfs = require('vinyl-fs');\n\nvar log = function (file, cb) {\n  console.log(file.path);\n  cb(null, file);\n};\n\nvfs\n  .src(['./js/**/*.js', '!./js/vendor/*.js'])\n  .pipe(map(log))\n  .pipe(vfs.dest('./output'));\n```\n\n## API\n\n### `src(globs[, options])`\n\nTakes a glob string or an array of glob strings as the first argument and an options object as the second.\nReturns a stream of [vinyl] `File` objects.\n\n**Note: UTF-8 BOM will be removed from all UTF-8 files read with `.src` unless disabled in the options.**\n\n#### Globs\n\nGlobs are executed in order, so negations should follow positive globs.\n\nFor example:\n\n```js\nfs.src(['!b*', '*']);\n```\n\nwould not exclude any files, but the following would exclude all files starting with \"b\":\n\n```js\nfs.src(['*', '!b*']);\n```\n\n#### Options\n\n- Values passed to the options must be of the expected type, otherwise they will be ignored.\n- All options can be passed a function instead of a value. The function will be called with the [vinyl] `File` object as its only argument and must return a value of the expected type for that option.\n\n##### `options.buffer`\n\nWhether or not you want to buffer the file contents into memory. Setting to `false` will make `file.contents` a paused Stream.\n\nType: `Boolean`\n\nDefault: `true`\n\n##### `options.read`\n\nWhether or not you want the file to be read at all. Useful for stuff like removing files. Setting to `false` will make `file.contents = null` and will disable writing the file to disk via `.dest()`.\n\nType: `Boolean`\n\nDefault: `true`\n\n##### `options.since`\n\nOnly streams files that have been modified since the time specified.\n\nType: `Date` or `Number`\n\nDefault: `undefined`\n\n##### `options.removeBOM`\n\nCauses the BOM to be removed on UTF-8 encoded files. Set to `false` if you need the BOM for some reason.\n\nType: `Boolean`\n\nDefault: `true`\n\n##### `options.encoding`\n\nOptionally transcode from the given encoding. The default is `'utf8'`. We use\n[iconv-lite], please refer to its Wiki for a list of supported encodings. You\ncan set this to `false` to avoid any transcoding, and effectively just pass\naround raw binary data.\n\nType: `String` or `Boolean`\n\nDefault: `'utf8'`\n\n##### `options.sourcemaps`\n\nEnables sourcemap support on files passed through the stream. Will load inline sourcemaps and resolve sourcemap links from files.\n\nType: `Boolean`\n\nDefault: `false`\n\n##### `options.resolveSymlinks`\n\nWhether or not to recursively resolve symlinks to their targets. Set to `false` to preserve them as symlinks and make `file.symlink` equal the original symlink's target path.\n\nType: `Boolean`\n\nDefault: `true`\n\n##### `options.dot`\n\nWhether or not you want globs to match on dot files (e.g. `.gitignore`).\n\n**Note: This option is not resolved from a function because it is passed verbatim to anymatch.**\n\nType: `Boolean`\n\nDefault: `false`\n\n##### other\n\nAny glob-related options are documented in [glob-stream] and [anymatch] and are forwarded verbatim.\n\n### `dest(folder[, options])`\n\nTakes a folder path string or a function as the first argument and an options object as the second. If given a function, it will be called with each [vinyl] `File` object and must return a folder path.\nReturns a stream that accepts [vinyl] `File` objects, writes them to disk at the folder/cwd specified, and passes them downstream so you can keep piping these around.\n\nOnce the file is written to disk, an attempt is made to determine if the `stat.mode`, `stat.mtime` and `stat.atime` of the [vinyl] `File` object differ from the file on the filesystem.\nIf they differ and the running process owns the file, the corresponding filesystem metadata is updated.\nIf they don't differ or the process doesn't own the file, the attempt is skipped silently.\n**This functionality is disabled on Windows operating systems or any other OS that doesn't support `process.getuid` or `process.geteuid` in node. This is due to Windows having very unexpected results through usage of `fs.fchmod` and `fs.futimes`.**\n\n**Note: The `fs.futimes()` method internally converts `stat.mtime` and `stat.atime` timestamps to seconds; this division by `1000` may cause some loss of precision in 32-bit Node.js.**\n\nIf the file has a `symlink` attribute specifying a target path, then a symlink will be created.\n\n**Note: The file will be modified after being written to this stream.**\n\n- `cwd`, `base`, and `path` will be overwritten to match the folder.\n- `stat` will be updated to match the file on the filesystem.\n- `contents` will have it's position reset to the beginning if it is a stream.\n\n#### Options\n\n- Values passed to the options must be of the expected type, otherwise they will be ignored.\n- All options can be passed a function instead of a value. The function will be called with the [vinyl] `File` object as its only argument and must return a value of the expected type for that option.\n\n##### `options.cwd`\n\nThe working directory the folder is relative to.\n\nType: `String`\n\nDefault: `process.cwd()`\n\n##### `options.mode`\n\nThe mode the files should be created with. This option is only resolved if the [vinyl] `File` is not symbolic.\n\nType: `Number`\n\nDefault: The `mode` of the input file (`file.stat.mode`) if any, or the process mode if the input file has no `mode` property.\n\n##### `options.dirMode`\n\nThe mode directories should be created with.\n\nType: `Number`\n\nDefault: The process `mode`.\n\n##### `options.overwrite`\n\nWhether or not existing files with the same path should be overwritten.\n\nType: `Boolean`\n\nDefault: `true` (always overwrite existing files)\n\n##### `options.append`\n\nWhether or not new data should be appended after existing file contents (if any).\n\nType: `Boolean`\n\nDefault: `false` (always replace existing contents, if any)\n\n##### `options.encoding`\n\nOptionally transcode to the given encoding. The default is `'utf8'`. We use\n[iconv-lite], please refer to its Wiki for a list of supported encodings. You\ncan set this to `false` to avoid any transcoding, and effectively just pass\naround raw binary data.\n\nType: `String` or `Boolean`\n\nDefault: `'utf8'`.\n\n##### `options.sourcemaps`\n\nEnables sourcemap support on files passed through the stream. Will write inline soucemaps if specified as `true`.\nSpecifying a `String` path will write external sourcemaps at the given path.\n\nExamples:\n\n```js\n// Write as inline comments\nvfs.dest('./', { sourcemaps: true });\n\n// Write as files in the same folder\nvfs.dest('./', { sourcemaps: '.' });\n```\n\nType: `Boolean` or `String`\n\nDefault: `undefined` (do not write sourcemaps)\n\n##### `options.relativeSymlinks`\n\nWhen creating a symlink, whether or not the created symlink should be relative. If `false`, the symlink will be absolute.\n\n**Note: This option will be ignored if a `junction` is being created, as they must be absolute.**\n\nType: `Boolean`\n\nDefault: `false`\n\n##### `options.useJunctions`\n\nWhen creating a symlink, whether or not a directory symlink should be created as a `junction`.\nThis option is only relevant on Windows and ignored elsewhere. Please refer to the [Symbolic Links on Windows][symbolic-caveats] section below.\n\nType: `Boolean`\n\nDefault: `true`\n\n### `symlink(folder[, options])`\n\nTakes a folder path string or a function as the first argument and an options object as the second. If given a function, it will be called with each [vinyl] `File` object and must return a folder path.\nReturns a stream that accepts [vinyl] `File` objects, creates a symbolic link (i.e. symlink) at the folder/cwd specified, and passes them downstream so you can keep piping these around.\n\n**Note: The file will be modified after being written to this stream.**\n\n- `cwd`, `base`, and `path` will be overwritten to match the folder.\n- `stat` will be updated to match the symlink on the filesystem.\n- `contents` will be set to `null`.\n- `symlink` will be added or replaced to be the original path.\n\n**Note: On Windows, directory links are created using Junctions by default. Use the `useJunctions` option to disable this behavior.**\n\n#### Options\n\n- Values passed to the options must be of the expected type, otherwise they will be ignored.\n- All options can be passed a function instead of a value. The function will be called with the [vinyl] `File` object as its only argument and must return a value of the expected type for that option.\n\n##### `options.cwd`\n\nThe working directory the folder is relative to.\n\nType: `String`\n\nDefault: `process.cwd()`\n\n##### `options.dirMode`\n\nThe mode directories should be created with.\n\nType: `Number`\n\nDefault: The process mode.\n\n##### `options.overwrite`\n\nWhether or not existing files with the same path should be overwritten.\n\nType: `Boolean`\n\nDefault: `true` (always overwrite existing files)\n\n##### `options.relativeSymlinks`\n\nWhether or not the created symlinks should be relative. If `false`, the symlink will be absolute.\n\n**Note: This option will be ignored if a `junction` is being created, as they must be absolute.**\n\nType: `Boolean`\n\nDefault: `false`\n\n##### `options.useJunctions`\n\nWhen creating a symlink, whether or not a directory symlink should be created as a `junction`.\nThis option is only relevant on Windows and ignored elsewhere. Please refer to the [Symbolic Links on Windows][symbolic-caveats] section below.\n\nType: `Boolean`\n\nDefault: `true`\n\n#### Symbolic Links on Windows\n\nWhen creating symbolic links on Windows, we pass a `type` argument to Node's\n`fs` module which specifies the kind of target we link to (one of `'file'`,\n`'dir'` or `'junction'`). Specifically, this will be `'file'` when the target\nis a regular file, `'junction'` if the target is a directory, or `'dir'` if\nthe target is a directory and the user overrides the `useJunctions` option\ndefault.\n\nHowever, if the user tries to make a \"dangling\" link (pointing to a non-existent\ntarget) we won't be able to determine automatically which type we should use.\nIn these cases, `vinyl-fs` will behave slightly differently depending on\nwhether the dangling link is being created via `symlink()` or via `dest()`.\n\nFor dangling links created via `symlink()`, the incoming vinyl represents the\ntarget and so we will look to its stats to guess the desired type. In\nparticular, if `isDirectory()` returns false then we'll create a `'file'` type\nlink, otherwise we will create a `'junction'` or a `'dir'` type link depending\non the value of the `useJunctions` option.\n\nFor dangling links created via `dest()`, the incoming vinyl represents the link -\ntypically read off disk via `src()` with the `resolveSymlinks` option set to\nfalse. In this case, we won't be able to make any reasonable guess as to the\ntype of link and we default to using `'file'`, which may cause unexpected behavior\nif you are creating a \"dangling\" link to a directory. It is advised to avoid this\nscenario.\n\n## License\n\nMIT\n\n\u003c!-- prettier-ignore-start --\u003e\n[downloads-image]: https://img.shields.io/npm/dm/vinyl-fs.svg?style=flat-square\n[npm-url]: https://www.npmjs.com/package/vinyl-fs\n[npm-image]: https://img.shields.io/npm/v/vinyl-fs.svg?style=flat-square\n\n[ci-url]: https://github.com/gulpjs/vinyl-fs/actions?query=workflow:dev\n[ci-image]: https://img.shields.io/github/actions/workflow/status/gulpjs/vinyl-fs/dev.yml??branch=master\u0026style=flat-square\n\n[coveralls-url]: https://coveralls.io/r/gulpjs/vinyl-fs\n[coveralls-image]: https://img.shields.io/coveralls/gulpjs/vinyl-fs.svg?style=flat-square\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- prettier-ignore-start --\u003e\n[symbolic-caveats]: #symbolic-links-on-windows\n[glob-stream]: https://github.com/gulpjs/glob-stream\n[anymatch]: https://github.com/micromatch/anymatch\n[vinyl]: https://github.com/gulpjs/vinyl\n[iconv-lite]: https://github.com/ashtuchkin/iconv-lite\n\u003c!-- prettier-ignore-end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgulpjs%2Fvinyl-fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgulpjs%2Fvinyl-fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgulpjs%2Fvinyl-fs/lists"}