Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gulp-community/gulp-order
This gulp plugin allows you to reorder a stream of files via globs.
https://github.com/gulp-community/gulp-order
Last synced: 4 days ago
JSON representation
This gulp plugin allows you to reorder a stream of files via globs.
- Host: GitHub
- URL: https://github.com/gulp-community/gulp-order
- Owner: gulp-community
- License: mit
- Created: 2014-02-18T11:34:24.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-12-10T10:49:35.000Z (about 1 month ago)
- Last Synced: 2025-01-05T15:04:34.640Z (6 days ago)
- Language: CoffeeScript
- Homepage:
- Size: 29.3 KB
- Stars: 161
- Watchers: 10
- Forks: 14
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome - gulp-community/gulp-order - This gulp plugin allows you to reorder a stream of files via globs. (CoffeeScript)
README
# gulp-order
The gulp plugin `gulp-order` allows you to reorder a stream of files using the same syntax as of `gulp.src`.
## Motivation
Assume you want to concatenate the following files in the given order (with `gulp-concat`):
- `vendor/js1.js`
- `vendor/**/*.{coffee,js}`
- `app/coffee1.coffee`
- `app/**/*.{coffee,js}`You'll need two streams:
- A stream that emits the JavaScript files, and
- a stream that emits the compiled CoffeeScript files.
To combine the streams you can pipe into another `gulp.src` or use `es.merge` (from `event-stream`). But you'll notice that in both cases the files are emitted in the same order as they come in - and this can seem very random. With `gulp-order` you can reorder the files.## Usage
`require("gulp-order")` returns a function that takes an array of patterns (as `gulp.src` would take).
```javascript
var order = require("gulp-order");
var coffee = require("gulp-coffee");
var concat = require("gulp-concat");gulp
.src("**/*.coffee")
.pipe(coffee())
.pipe(gulp.src("**/*.js")) // gulp.src passes through input
.pipe(order([
"vendor/js1.js",
"vendor/**/*.js",
"app/coffee1.js",
"app/**/*.js"
]))
.pipe(concat("all.js"))
.pipe(gulp.dest("dist"));// When passing gulp.src stream directly to order, don't include path source/scripts in the order paths.
// They should be relative to the /**/*.js.
gulp
.src("source/scripts/**/*.js")
.pipe(order([
"vendor/js1.js",
"vendor/**/*.js",
"app/coffee1.js",
"app/**/*.js"
]))
.pipe(concat("all.js"))
.pipe(gulp.dest("dist"));
```## Options
```javascript
gulp
.src("**/*.coffee")
// ...
.pipe(order([...], options))
```#### `base`
Some plugins might provide a wrong `base` on the Vinyl file objects. `base` allows you to set a base directory (for example: your application root directory) for all files.
## Features
Uses [`minimatch`](https://github.com/isaacs/minimatch) for matching.
## Tips
- Try to move your ordering out of your `gulp.src(...)` calls into `order(...)` instead.
- You can see the order of the outputted files with [`gulp-print`](https://github.com/alexgorbatchev/gulp-print)
## TroubleshootingIf your files aren't being ordered in the manner that you expect, try adding the [`base`](#base) option.
## Alternative Approaches
- [`gulp-if`](https://github.com/robrich/gulp-if)
## Contributors
- [Marcel Jackwerth](http://twitter.com/sirlantis)
## License
MIT - Copyright © 2014 Marcel Jackwerth