Gulp-Order 开源项目使用教程
1. 项目的目录结构及介绍
Gulp-Order 是一个用于控制 Gulp 任务中文件顺序的插件。以下是该项目的目录结构及其介绍:
gulp-order/
├── LICENSE
├── README.md
├── index.js
├── package.json
└── test/
├── basic.js
├── custom-sort.js
├── empty.js
├── gulpfile.js
├── index.js
├── package.json
└── test.js
LICENSE
: 项目的许可证文件。README.md
: 项目的说明文档。index.js
: 项目的主文件,包含了插件的主要功能实现。package.json
: 项目的依赖管理文件。test/
: 包含项目的测试文件。basic.js
: 基本的测试文件。custom-sort.js
: 自定义排序的测试文件。empty.js
: 空文件测试。gulpfile.js
: 测试用的 Gulp 配置文件。index.js
: 测试入口文件。package.json
: 测试依赖管理文件。test.js
: 其他测试文件。
2. 项目的启动文件介绍
项目的启动文件是 index.js
,它包含了 Gulp-Order 插件的主要功能实现。以下是 index.js
的部分代码示例:
var through = require('through2');
var gutil = require('gulp-util');
var PluginError = gutil.PluginError;
module.exports = function(order) {
if (!order) {
throw new PluginError('gulp-order', 'Missing order array');
}
var orderIndex = 0;
var files = [];
function bufferContents(file, enc, cb) {
if (file.isNull()) {
cb(null, file);
return;
}
files.push(file);
cb();
}
function endStream(cb) {
var self = this;
files.sort(function(a, b) {
var aIndex = order.indexOf(a.path);
var bIndex = order.indexOf(b.path);
if (aIndex === -1) aIndex = order.length + files.indexOf(a);
if (bIndex === -1) bIndex = order.length + files.indexOf(b);
return aIndex - bIndex;
});
files.forEach(function(file) {
self.push(file);
});
cb();
}
return through.obj(bufferContents, endStream);
};
3. 项目的配置文件介绍
项目的配置文件主要是 package.json
,它包含了项目的依赖信息、脚本命令等。以下是 package.json
的部分内容示例:
{
"name": "gulp-order",
"version": "1.2.0",
"description": "The gulp plugin `gulp-order` allows you to reorder a stream of files using the same syntax as of `gulp.src`.",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "https://github.com/gulp-community/gulp-order.git"
},
"keywords": [
"gulpplugin",
"order",
"sequence",
"gulp",
"vinyl"
],
"author": "Artem Medeusheyev <artem.medeusheyev@gmail.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/gulp-community/gulp-order/issues"
},
"homepage": "https://github.com/gulp-community/gulp-order",
"dependencies": {
"through2": "^2.0.0",
"gulp-util": "^3.0.7"
},
"devDependencies": {
"mocha": "^3.0.2",
"should": "^11.1.0