{"_id":"gulp-plugin-extras","_rev":"4087252","name":"gulp-plugin-extras","description":"Useful utilities for creating Gulp plugins","dist-tags":{"latest":"1.1.0"},"maintainers":[{"name":"sindresorhus","email":""}],"time":{"modified":"2025-12-02T22:11:51.000Z","created":"2023-10-31T18:41:48.792Z","1.1.0":"2024-10-14T06:18:13.069Z","1.0.0":"2024-05-02T14:52:49.010Z","0.3.0":"2023-11-03T08:32:55.415Z","0.2.2":"2023-11-01T16:51:22.777Z","0.2.1":"2023-10-31T21:24:04.638Z","0.2.0":"2023-10-31T19:54:04.605Z","0.1.0":"2023-10-31T18:41:48.792Z"},"users":{},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"versions":{"1.1.0":{"name":"gulp-plugin-extras","version":"1.1.0","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.12","chalk":"^5.3.0","easy-transform-stream":"^1.0.1"},"devDependencies":{"ava":"^6.1.2","p-event":"^6.0.1","typescript":"^5.4.5","vinyl":"^3.0.0","xo":"^0.58.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"_id":"gulp-plugin-extras@1.1.0","gitHead":"6dabe65bcc339fc216276e39d6e15130e76d10de","types":"./index.d.ts","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_nodeVersion":"22.6.0","_npmVersion":"10.6.0","dist":{"shasum":"47bb1022bed0ea0216ac6c6a61a35c4fe014318e","size":3987,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-1.1.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_1.1.0_1728886692894_0.3391794124636869"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-14T06:18:13.069Z","publish_time":1728886693069,"_source_registry_name":"default","_cnpm_publish_time":1728886693069},"1.0.0":{"name":"gulp-plugin-extras","version":"1.0.0","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.12","chalk":"^5.3.0","easy-transform-stream":"^1.0.1"},"devDependencies":{"ava":"^6.1.2","p-event":"^6.0.1","typescript":"^5.4.5","vinyl":"^3.0.0","xo":"^0.58.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"_id":"gulp-plugin-extras@1.0.0","gitHead":"0cc102e3eb957fba1e508bda93384693a3409f88","types":"./index.d.ts","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_nodeVersion":"20.12.2","_npmVersion":"10.6.0","dist":{"shasum":"74c4ddf14dde61100f5fd7b81cab45e87a72ebe3","size":3596,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-1.0.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_1.0.0_1714661568859_0.012591103329623543"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-05-02T14:52:49.010Z","publish_time":1714661569010,"_source_registry_name":"default","_cnpm_publish_time":1714661569010},"0.3.0":{"name":"gulp-plugin-extras","version":"0.3.0","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.9","chalk":"^5.3.0","easy-transform-stream":"^1.0.1"},"devDependencies":{"ava":"^5.3.1","p-event":"^6.0.0","typescript":"^5.2.2","vinyl":"^3.0.0","xo":"^0.56.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"types":"./index.d.ts","gitHead":"4a052093f2c3bca6501dc034e6e4e4202396ac9d","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_id":"gulp-plugin-extras@0.3.0","_nodeVersion":"18.18.2","_npmVersion":"9.2.0","dist":{"shasum":"ad2c15eb7d7153a75556c59ee81d84693ec42330","size":3554,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-0.3.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_0.3.0_1699000375171_0.6371896132275001"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-11-03T08:32:55.415Z","publish_time":1699000375415,"_source_registry_name":"default","_cnpm_publish_time":1699000375415},"0.2.2":{"name":"gulp-plugin-extras","version":"0.2.2","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.9","chalk":"^5.3.0","easy-transform-stream":"^1.0.1"},"devDependencies":{"ava":"^5.3.1","p-event":"^6.0.0","typescript":"^5.2.2","vinyl":"^3.0.0","xo":"^0.56.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"types":"./index.d.ts","gitHead":"f90be6afdca228eedc06e851ba16055e3b1fde1f","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_id":"gulp-plugin-extras@0.2.2","_nodeVersion":"18.18.2","_npmVersion":"9.2.0","dist":{"shasum":"8f4af2c0acdc95aaac9dcd86e54f200a6e2842c4","size":3436,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-0.2.2.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_0.2.2_1698857482477_0.13575331761020926"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-11-01T16:51:22.777Z","publish_time":1698857482777,"_source_registry_name":"default","_cnpm_publish_time":1698857482777},"0.2.1":{"name":"gulp-plugin-extras","version":"0.2.1","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.9","chalk":"^5.3.0","easy-transform-stream":"^1.0.1"},"devDependencies":{"ava":"^5.3.1","p-event":"^6.0.0","typescript":"^5.2.2","vinyl":"^3.0.0","xo":"^0.56.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"types":"./index.d.ts","gitHead":"dac9a3ea7496d9c79a29032c43a59029e0a50a12","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_id":"gulp-plugin-extras@0.2.1","_nodeVersion":"18.18.2","_npmVersion":"9.2.0","dist":{"shasum":"880a7334ea2d3130640c365e2e2d24c1f1d62f47","size":3361,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-0.2.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_0.2.1_1698787444370_0.4404775726447454"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-31T21:24:04.638Z","publish_time":1698787444638,"_source_registry_name":"default","_cnpm_publish_time":1698787444638},"0.2.0":{"name":"gulp-plugin-extras","version":"0.2.0","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.9","chalk":"^5.3.0","easy-transform-stream":"^1.0.0"},"devDependencies":{"ava":"^5.3.1","p-event":"^6.0.0","typescript":"^5.2.2","vinyl":"^3.0.0","xo":"^0.56.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"types":"./index.d.ts","gitHead":"48090fbbb9d63816dea6c0cd4df74a0680081eeb","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_id":"gulp-plugin-extras@0.2.0","_nodeVersion":"18.18.2","_npmVersion":"9.2.0","dist":{"shasum":"d7ed5c4cf9b7adc4b3feda1ef629cec662974d8e","size":3346,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-0.2.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_0.2.0_1698782044143_0.5951123681468515"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-31T19:54:04.605Z","publish_time":1698782044605,"_source_registry_name":"default","_cnpm_publish_time":1698782044605},"0.1.0":{"name":"gulp-plugin-extras","version":"0.1.0","description":"Useful utilities for creating Gulp plugins","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/gulp-plugin-extras.git"},"funding":"https://github.com/sponsors/sindresorhus","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"engines":{"node":">=18"},"scripts":{"test":"xo && ava && tsc index.d.ts"},"keywords":["gulp","plugin","extras","utilities"],"dependencies":{"@types/vinyl":"^2.0.9","chalk":"^5.3.0","easy-transform-stream":"^1.0.0"},"devDependencies":{"ava":"^5.3.1","p-event":"^6.0.0","typescript":"^5.2.2","vinyl":"^3.0.0","xo":"^0.56.0"},"xo":{"rules":{"@typescript-eslint/no-require-imports":"off"}},"types":"./index.d.ts","gitHead":"7e01ff9f91e932b378e7667eb56fcdf86e1a59e1","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","_id":"gulp-plugin-extras@0.1.0","_nodeVersion":"18.18.2","_npmVersion":"9.2.0","dist":{"shasum":"c05c2390516475f644a889570f59a8f8a6bce05b","size":3173,"noattachment":false,"key":"/gulp-plugin-extras/-/gulp-plugin-extras-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/gulp-plugin-extras/download/gulp-plugin-extras-0.1.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/gulp-plugin-extras_0.1.0_1698777708594_0.27802850486035324"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-31T18:41:48.792Z","publish_time":1698777708792,"_source_registry_name":"default","_cnpm_publish_time":1698777708792}},"readme":"# gulp-plugin-extras\n\n> Useful utilities for creating [Gulp](https://github.com/gulpjs/gulp) plugins\n\n## Install\n\n```sh\nnpm install gulp-plugin-extras\n```\n\n## Usage\n\n```js\nimport {gulpPlugin, PluginError} from 'gulp-plugin-extras';\n\nconst pluginName = 'gulp-foo';\n\nexport default function gulpFoo(requiredArgument) {\n\tif (!requiredArgument) {\n\t\tthrow new PluginError(pluginName, 'Missing argument `requiredArgument`');\n\t}\n\n\treturn gulpPlugin(pluginName, async file => {\n\t\tfile.contents = await someKindOfTransformation(file.contents);\n\t\treturn file;\n\t});\n}\n```\n\n## API\n\n### `gulpPlugin(name, onFile, options?)`\n\nCreate a Gulp plugin.\n\nIf you throw an error with a `.isPresentable = true` property, it will not display the error stack.\n\n*This does not support streaming unless you enable the `supportsAnyType` option.*\n\n#### name\n\nType: `string`\n\nThe plugin name.\n\n#### onFile\n\nType: `(file) => file`\n\nThe function called for each [Vinyl file](https://github.com/gulpjs/vinyl) in the stream. Must return a modified or new Vinyl file. May be async.\n\n#### options\n\nType: `object`\n\n##### supportsDirectories\n\nType: `boolean`\\\nDefault: `false`\n\nWhether the plugin can handle directories.\n\n##### supportsAnyType\n\nType: `boolean`\\\nDefault: `false`\n\nWhether the plugin can handle any Vinyl file type.\n\nUseful for custom type filtering.\n\nSupersedes `supportsDirectories`.\n\n##### onFinish\n\nType: `async function * (stream: NodeJS.ReadableStream): AsyncGenerator<File, never, void>`\n\nAn async generator function executed for finalization after all files have been processed.\n\nYou can yield more files from it if needed.\n\n```js\nimport {gulpPlugin} from 'gulp-plugin-extras';\n\nexport default function gulpFoo() {\n\treturn gulpPlugin(\n\t\t'gulp-foo',\n\t\tasync file => { … },\n\t\t{\n\t\t\tasync * onFinish() {\n\t\t\t\tyield someVinylFile;\n\t\t\t\tyield someVinylFile2;\n\t\t\t}\n\t\t}\n\t);\n}\n```\n\n### `PluginError`\n\nCreate a Gulp plugin error. See the [types](index.d.ts) for docs.\n","_attachments":{},"homepage":"https://github.com/sindresorhus/gulp-plugin-extras#readme","bugs":{"url":"https://github.com/sindresorhus/gulp-plugin-extras/issues"},"license":"MIT"}