├── test
└── .gitkeep
├── src
├── favicon.ico
├── scripts
│ ├── module.js
│ └── controller
│ │ └── pluginList.js
├── README.md
├── opensearch.xml
├── index.html
├── css
│ └── style.css
├── logo.svg
└── blackList.json
├── .gitignore
├── bower.json
├── package.json
├── LICENSE
├── Gulpfile.js
└── README.md
/test/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gulpjs/plugins/HEAD/src/favicon.ico
--------------------------------------------------------------------------------
/src/scripts/module.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('npm-plugin-browser', ['infinite-scroll']);
4 |
--------------------------------------------------------------------------------
/src/README.md:
--------------------------------------------------------------------------------
1 | # gulp plugins
2 |
3 | This is the deployed branch, the one you see on [github pages](https://gulpjs.com/plugins).
4 |
5 | If you wish to see the actual project's code, see the [master branch](https://github.com/gulpjs/plugins/tree/master).
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Node
2 | lib-cov
3 | lcov.info
4 | *.seed
5 | *.log
6 | *.csv
7 | *.dat
8 | *.out
9 | *.pid
10 | *.gz
11 |
12 | pids
13 | logs
14 | results
15 | build
16 | .grunt
17 |
18 | node_modules
19 | bower_components
20 | public
21 | dist
22 |
23 | .idea
24 | *.iml
25 | .DS_Store
26 |
--------------------------------------------------------------------------------
/src/opensearch.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Gulp Plugins
4 | https://gulpjs.com/plugins/favicon.ico
5 |
6 |
7 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-plugins",
3 | "version": "0.0.0",
4 | "homepage": "gulp-plugins",
5 | "license": "MIT",
6 | "private": true,
7 | "ignore": [
8 | "**/.*",
9 | "node_modules",
10 | "bower_components",
11 | "test",
12 | "tests"
13 | ],
14 | "dependencies": {
15 | "jquery": "~2.1.0",
16 | "angular": "~1.2.11",
17 | "ngInfiniteScroll": "~1.1.0"
18 | },
19 | "overrides": {
20 | "angular": {
21 | "dependencies": {
22 | "jquery": "*"
23 | }
24 | },
25 | "ngInfiniteScroll": {
26 | "dependencies": {
27 | "angular": "*"
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-plugins",
3 | "version": "0.0.0",
4 | "homepage": "gulp-plugins",
5 | "license": "MIT",
6 | "private": true,
7 | "scripts": {
8 | "postinstall": "bower install"
9 | },
10 | "devDependencies": {
11 | "bower": "^1.3.12",
12 | "event-stream": "^3.2.2",
13 | "gulp": "^3.8.11",
14 | "gulp-autoprefixer": "^4.0.0",
15 | "gulp-gh-pages": "^0.5.0",
16 | "gulp-if": "^2.0.0",
17 | "gulp-minify-css": "^1.0.0",
18 | "gulp-ngmin": "^0.3.0",
19 | "gulp-refresh": "^1.0.0",
20 | "gulp-uglify": "^3.0.0",
21 | "gulp-useref": "^2.0.0",
22 | "rimraf": "^2.2.8",
23 | "uglify-save-license": "^0.4.1"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Robin Böhm
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/Gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp'),
2 | rimraf = require('rimraf'),
3 | uglify = require('gulp-uglify'),
4 | minifyCss = require('gulp-minify-css'),
5 | ngmin = require('gulp-ngmin'),
6 | useref = require('gulp-useref'),
7 | deploy = require('gulp-gh-pages'),
8 | gif = require('gulp-if'),
9 | es = require('event-stream'),
10 | lr = require('gulp-refresh'),
11 | autoprefixer = require('gulp-autoprefixer'),
12 | saveLicense = require('uglify-save-license');
13 |
14 | // Clean public
15 | gulp.task('clean', function (cb) {
16 | rimraf('dist', cb);
17 | });
18 |
19 | // Build
20 | gulp.task('default', ['build', 'assets']);
21 | gulp.task('dev', ['default', 'watch']);
22 |
23 | gulp.task('watch', function(){
24 | gulp.watch('src/**/*', ['build', 'assets']);
25 | });
26 |
27 | gulp.task('build', ['clean'], function () {
28 | var nonVendor = 'scripts/**/*.js';
29 | var assets = useref.assets();
30 |
31 | return gulp.src('src/index.html')
32 | .pipe(assets)
33 | .pipe(gif(nonVendor, ngmin()))
34 | /*.pipe(gif('*.js', uglify({
35 | mangle: false,
36 | preserveComments: saveLicense
37 | })))*/
38 | .pipe(gif('*.css', autoprefixer('last 2 versions')))
39 | .pipe(gif('*.css', minifyCss()))
40 | .pipe(assets.restore())
41 | .pipe(useref())
42 | .pipe(gulp.dest('dist'))
43 | .pipe(lr());
44 | });
45 |
46 | gulp.task('assets', ['clean'], function () {
47 | return gulp.src([
48 | 'src/blackList.json',
49 | 'src/favicon.ico',
50 | 'src/logo.svg',
51 | 'src/opensearch.xml',
52 | 'src/README.md'
53 | ], {base: 'src'})
54 | .pipe(gulp.dest('dist'))
55 | .pipe(lr());
56 | });
57 |
58 | // Deploy
59 | gulp.task('deploy', ['default'], function () {
60 | return gulp.src('dist/**/*')
61 | .pipe(deploy('git@github.com:gulpjs/plugins.git'));
62 | });
63 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | gulp plugins
2 | ============
3 | #### ~ [https://gulpjs.com/plugins/](https://gulpjs.com/plugins/)
4 |
5 | This app is a simple client-side app that allows one to browse and search gulp plugins.
6 | It fetches data from [npmsearch](https://npmsearch.com/) with the keywords *gulpplugin* and *gulpfriendly*.
7 | npmsearch also provides rankings for plugins(so we don't have to).
8 |
9 | Built with [AngularJS](https://angularjs.org) and [gulp](https://gulpjs.com/)
10 |
11 | ## Blacklisting
12 |
13 | To maintain quality in the plugin ecosystem, we sometimes "blacklist" plugins. Being blacklisted means we won't offer support for issues concerning the module and we will not recommend that people use it. You are free to publish anything you want on NPM, but our official plugin list is subject to filtering.
14 |
15 | A plugin may be blacklisted for the following reasons:
16 |
17 | 1. Does not fit within the gulp paradigm
18 | 2. Flagrant duplicate of an existing plugin
19 | 3. Does not follow the plugin guidelines
20 |
21 | If you feel that a plugin has been blacklisted incorrectly or you would like to add a plugin to the blacklist, use the issues page.
22 |
23 | ## Contributing
24 |
25 | We welcome all contributors! But please read the notes:
26 |
27 | ### Project structure
28 |
29 | To develop, run `npm install`. Everything that is needed both for the client and development will be installed
30 | (other than gulp, but you probably have that installed through `npm install -g gulp`).
31 |
32 | The app code is in app/, with index.html in assets/, javascript in js/, and css in css/.
33 |
34 | One quirk of this is that the README for the gh-pages branch goes in assets (so it is preserved during deployment).
35 |
36 | ### Development and deployment
37 |
38 | Several tasks are available from gulp for development and deployment:
39 |
40 | - `gulp`: Builds the project on the master branch
41 | - `gulp deploy`: Builds the project for production and deploys by pushing to the
42 | [gh-pages](https://github.com/gulpjs/plugins/tree/gh-pages) branch.
43 | An example output is [this](https://github.com/gulpjs/plugins/commit/fa4027f90a725d9caa7971fc00e1d3c4174d2026) commit.
44 | This is safe as only people with push access to the repo can deploy(awesome!).
45 |
--------------------------------------------------------------------------------
/src/scripts/controller/pluginList.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('npm-plugin-browser')
4 | .controller('PluginListCtrl', function ($scope, $http, $location, $q) {
5 |
6 | var fields = ['name','keywords','rating','description','author','modified','homepage','version'];
7 |
8 | var initialFetchSize = 20;
9 |
10 | var formatResult = function(data){
11 | fields.forEach(function(k){
12 | if (k === 'keywords') return;
13 | if (!Array.isArray(data[k])) return;
14 | data[k] = data[k][0];
15 | });
16 | return data;
17 | };
18 |
19 | var formatData = function(data){
20 | var out = {
21 | results: data.results.map(formatResult),
22 | total: data.total
23 | };
24 | return out;
25 | };
26 |
27 | var makeRequest = function (start, size) {
28 | return $http.get('https://npmsearch.com/query', {
29 | params: {
30 | q: ['keywords:gulpfriendly', 'keywords:gulpplugin'],
31 | fields: fields.join(','),
32 | start: start,
33 | size: size,
34 | sort: 'rating:desc'
35 | },
36 | transformResponse: $http.defaults.transformResponse.concat([formatData])
37 | });
38 | };
39 |
40 | var sortBy = function () {
41 | var args = arguments;
42 |
43 | return function (a, b) {
44 | var scoreA, scoreB;
45 |
46 | for (var i = 0, len = args.length; i < len; i++) {
47 | scoreA = args[i](a);
48 | scoreB = args[i](b);
49 | if (scoreA < scoreB) {
50 | return -1;
51 | } else if (scoreA > scoreB) {
52 | return 1;
53 | }
54 | }
55 |
56 | return 0;
57 | };
58 | };
59 |
60 | var sortResults = function (results) {
61 | return results.sort(sortBy(
62 | // Sort blackList plugins to bottom
63 | function (plugin) {
64 | return $scope.blackList[plugin.name] ? 1 : 0;
65 | },
66 | // Sort highly-rated plugins to top
67 | function (plugin) {
68 | return -plugin.rating;
69 | },
70 | // Fall back to sort by name
71 | function (plugin) {
72 | return plugin.name;
73 | }
74 | ));
75 | };
76 |
77 | $q.all([$http.get('blackList.json'), makeRequest(0, initialFetchSize)])
78 | .then(function (responses) {
79 | $scope.blackList = responses[0].data;
80 | $scope.data = sortResults(responses[1].data.results);
81 | return makeRequest(initialFetchSize, responses[1].data.total);
82 | })
83 | .then(function (response) {
84 | $scope.data = sortResults($scope.data.concat(response.data.results));
85 | if (angular.isString(($location.search()).q)) {
86 | $scope.search = ($location.search()).q;
87 | }
88 | });
89 |
90 | $scope.orderByGulpKeywords = function (item) {
91 | return (item === 'gulpplugin' || item === 'gulpfriendly') ? -1 : 0;
92 | };
93 |
94 | $scope.notBlacklisted = function (item) {
95 | return (item && !$scope.blackList[item.name]);
96 | };
97 | });
98 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | gulp.js plugin registry
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
30 |
31 |
32 |
33 | - No results found
34 |
35 | -
37 |
38 |
39 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/src/css/style.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | backface-visibility: hidden;
3 | height: 100%;
4 | width: 100%;
5 | font-family: 'Roboto Slab', serif;
6 | font-weight: normal;
7 | padding: 0;
8 | margin: 0;
9 | background: rgb(207, 70, 70);
10 | }
11 |
12 | .good-font {
13 | text-rendering: optimizeLegibility;
14 | -moz-osx-font-smoothing: grayscale;
15 | -webkit-font-smoothing: antialiased;
16 | }
17 | .plugin-list-container {
18 | overflow-x: hidden;
19 | overflow-y: scroll;
20 | -webkit-overflow-scrolling: touch;
21 | }
22 |
23 | .fixed-title {
24 | box-shadow: 0 0 2px 1px rgba(0,0,0,0.1);
25 | text-align: center;
26 | background: #fff;
27 | line-height: 60px;
28 | font-size: 28px;
29 | position: fixed;
30 | color: #66696a;
31 | height: 60px;
32 | width: 100%;
33 | top: 0;
34 | left: 0;
35 | z-index: 3;
36 | }
37 |
38 | .logo {
39 | position: absolute;
40 | left: 20px;
41 | text-decoration: none;
42 | color: inherit;
43 | font-family: 'Grand Hotel', cursive;
44 | font-size: 28px;
45 | }
46 |
47 | .plugin-search {
48 | text-align: center;
49 | transition: all 300ms;
50 | border: 1px solid #E0E0E0;
51 | padding: 4px;
52 | border-radius: 3px;
53 | font-family: inherit;
54 | color: #333;
55 | line-height: 120%;
56 | outline: 0;
57 | height: 40px;
58 | font-size: 18px;
59 | margin: auto;
60 | max-width: 500px;
61 | width: 50%;
62 | }
63 |
64 | .plugin-search:focus {
65 | border-color: #555;
66 | }
67 |
68 | .plugin-list {
69 | padding: 20px;
70 | box-shadow: 3px 3px 3px 3px rgba(0,0,0,0.1);
71 | background: #fff;
72 | z-index: 2;
73 | position: relative;
74 | margin: 60px auto;
75 | list-style: none;
76 | max-width: 850px;
77 | }
78 |
79 | .no-results {
80 | text-align: center;
81 | padding-top: 35px;
82 | padding-bottom: 35px;
83 | font-size: 36px;
84 | color: #333;
85 | word-break: keep-all;
86 | }
87 |
88 | .plugin {
89 | border-bottom: 1px solid #e3e3e3;
90 | padding-bottom: 35px;
91 | padding-top: 35px;
92 | text-align: center;
93 | }
94 |
95 | .plugin:last-child {
96 | padding-bottom: 50px;
97 | border-bottom: 0;
98 | }
99 |
100 | .title {
101 | height: 60px;
102 | line-height: 60px;
103 | text-decoration: none;
104 | font-weight: 400;
105 | font-size: 36px;
106 | color: #333;
107 | }
108 |
109 | .title:hover {
110 | text-decoration: underline;
111 | }
112 |
113 | .description {
114 | min-height: 40px;
115 | line-height: 40px;
116 | color: #2B2A29;
117 | font-size: 18px;
118 | font-weight: 300;
119 | word-break: keep-all;
120 | }
121 |
122 | .more-info {
123 | margin-top: 20px;
124 | color: #999;
125 | }
126 |
127 | .tags a {
128 | display: inline-block;
129 | transition: all 300ms;
130 |
131 | border: 1px solid #E0E0E0;
132 | text-decoration: none;
133 | border-radius: 3px;
134 | padding: 3px;
135 | padding-right: 8px;
136 | padding-left: 8px;
137 | margin-right: 5px;
138 | margin-top: 5px;
139 | font-size: 12px;
140 | color: #66696A;
141 | }
142 |
143 | .tags a:hover {
144 | border-color: #555;
145 | }
146 |
147 | @media (max-width: 900px) {
148 | .plugin-list {
149 | margin-left: 0;
150 | margin-right: 0;
151 | padding: 10px;
152 | }
153 |
154 | .logo, .more-info {
155 | display: none;
156 | }
157 |
158 | .plugin-search {
159 | width: 90%;
160 | }
161 | }
162 |
163 | .ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak] {
164 | display: none !important
165 | }
166 |
--------------------------------------------------------------------------------
/src/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | ]>
6 |
--------------------------------------------------------------------------------
/src/blackList.json:
--------------------------------------------------------------------------------
1 | {
2 | "gulp-angular-templatecache-ionic": "duplicate of gulp-angular-templatecache",
3 | "mmjd-gulp-este": "duplicate of gulp-este",
4 | "gulp-blink": "deprecated. use `blink` instead.",
5 | "gulp-build-branch": "use the `buildbrach` module",
6 | "gulp-clean": "use the `del` module",
7 | "gulp-doggy": "duplicate of gulp-jsdoc",
8 | "gulp-rimraf": "use the `del` module",
9 | "gulp-browserify": "use the browserify module directly",
10 | "gulp-myth-css": "duplicate of gulp-myth",
11 | "gulp-htmin": "duplicate of gulp-htmlmin",
12 | "gulp-filesize": "duplicate of gulp-size",
13 | "gulp-redust": "duplicate of gulp-dust",
14 | "gulp-shell": "promotes anti-patterns, use gulp-exec or child_process",
15 | "gulp-streamline": "no documentation, duplicate of gulp-streamlinejs",
16 | "gulp-compile-js": "combines other plugins",
17 | "gulp-module-system": "does too much, use gulp-wrap-* modules",
18 | "gulp-wrap-define": "duplicate of gulp-wrap-amd",
19 | "gulp-urequire": "no documentation",
20 | "gulp-absolute": "use gulp-filter and node's path module",
21 | "gulp-wintersmith": "use the wintersmith module directly",
22 | "gulp-connect": "use the connect module directly",
23 | "gulp-image-optimization": "duplicate of gulp-imagemin",
24 | "gulp-bower": "use the bower module directly",
25 | "gulp-ember-handlebars": "duplicate of gulp-handlebars & too complex",
26 | "gulp-ember-handlebarz": "duplicate of gulp-handlebars & too complex",
27 | "gulp-es6to5": "duplicate of gulp-6to5",
28 | "gulp-handlebars-michael": "duplicate of gulp-handlebars",
29 | "gulpify": "deprecated - use vinyl-source-stream instead",
30 | "gulp-web-modules": "a grab bag of tasks/plugins - not a plugin itself",
31 | "gulp-jekyll": "use Jekyll directly through gulp-spawn or ChildProcess.spawn()",
32 | "gulp-reduce": "use AssetGraph directly",
33 | "gulp-imageoptim": "should just be a vanilla node module",
34 | "gulp-typescript-compiler": "duplicate of gulp-typescript",
35 | "gulp-ts": "duplicate of gulp-typescript",
36 | "gulp-load": "too magical, use require() or gulp-load-plugins",
37 | "gulp-spawn-mocha": "duplicate of gulp-mocha",
38 | "gulp-swig-precompiler": "duplicate of gulp-swig",
39 | "gulp-usemin": "does too much. touches fs. non-responsive author. use gulp-useref.",
40 | "gulp-usemin2": "duplicate of gulp-usemin",
41 | "gulp-usemin-query": "duplicate of gulp-usemin",
42 | "gulp-play-usemin": "duplicate of gulp-usemin",
43 | "gulp-jade-usemin": "duplicate of gulp-usemin",
44 | "gulp-bundle": "deprecated. use gulp-useref.",
45 | "gulp-npm": "use the npm module directly or gulp-spawn",
46 | "duh": "not a gulp plugin",
47 | "tc-gulp-boilerplate": "not a gulp plugin",
48 | "gulp-blanket-mocha": "use gulp-coverage",
49 | "gulp-js-prettify": "duplicate of gulp-beautify",
50 | "gulp-using": "duplicate of gulp-debug",
51 | "gulp-removelogs": "fragile. use gulp-strip-debug",
52 | "gulp-download": "use the request module",
53 | "gulp-php": "use PHP directly through gulp-spawn or ChildProcess.spawn()",
54 | "gulp-apidoc": "use the apidoc module",
55 | "gulp-wp-rev": "not a gulp plugin",
56 | "gulp-continuous-concat": "duplicate of gulp-concat",
57 | "gulp-dart2js": "use Dart2JS directly through gulp-spawn or ChildProcess.spawn()",
58 | "gulp-spritesmith": "duplicate of gulp.spritesmith",
59 | "gulp-filelog": "duplicate of gulp-debug",
60 | "gulp-remove-lines": "duplicate of gulp-replace",
61 | "gulp-ext-replace": "duplicate of gulp-rename",
62 | "gulp-pancakes": "does nothing",
63 | "gulp-batch-replace": "duplicate of gulp-replace",
64 | "gulp-mversion": "duplicate of gulp-bump",
65 | "gulp-minify-inline-scripts": "duplicate of gulp-uglify-inline",
66 | "gulp-jshint-cached": "duplicate of gulp-jshint",
67 | "gulp-twitter": "not a gulp plugin",
68 | "gulp-print": "duplicate of gulp-debug",
69 | "gulp-css": "duplicate of gulp-minify-css",
70 | "gulp-uncss-task": "duplicate of gulp-uncss",
71 | "gulp-juice": "duplicate of gulp-inline-css",
72 | "gulp-install": "use gulp-spawn",
73 | "gulp-gzip2": "duplicate of gulp-gzip",
74 | "gulp-cssmin": "duplicate of gulp-minify-css",
75 | "gulp-uglify2": "duplicate of gulp-uglify",
76 | "gulp-commonjs": "no (github-)repository available, use gulp-wrap-commonjs",
77 | "gulp-license-finder": "shouldn't be a gulp plugin",
78 | "gulp-common-wrap": "No README, No (github-)repository - use gulp-wrap-commonjs instead",
79 | "gulp-tinypng": "uses fs to create a temp .gulp folder",
80 | "gulp-faster-browserify": "use the watchify module directly: https://github.com/gulpjs/gulp/blob/master/docs/recipes/fast-browserify-builds-with-watchify.md",
81 | "gulp-saxon": "reads from fs and not stream",
82 | "gulp-gitinfo": "not a gulp plugin",
83 | "gulp-gh-pages-ci-compatible": "duplicate of gulp-gh-pages",
84 | "gulp-git-pages": "duplicate of gulp-gh-pages",
85 | "gulp-clean-old": "duplicate of gulp-clean",
86 | "gulp-closure-compiler-old": "duplicate of gulp-closure-compiler",
87 | "gulp-changed-old": "duplicate of gulp-changed",
88 | "gulp-browserify-old": "duplicate of gulp-browserify",
89 | "gulp-streamify-old": "duplicate of gulp-streamify",
90 | "gulp-spawn-shim": "duplicate of gulp-spawn",
91 | "retro-gulp-jade": "duplicate of gulp-jade",
92 | "retro-gulp-styl": "duplicate of gulp-styl",
93 | "vinyl-source-stream2": "duplicate of vinyl-source-stream",
94 | "gulp-csscssfont64": "duplicate of gulp-cssfont64",
95 | "gulp-uglifyjs": "duplicate of gulp-uglify",
96 | "gulp-file-list": "unpublished by author",
97 | "gulp-module-requirejs": "use the require.js module directly",
98 | "gulp-tmpl": "duplicate of gulp-template",
99 | "gulp-chug": "no reason for this to exist, use the require-all module or node's require",
100 | "gulp-marked": "duplicate of gulp-markdown",
101 | "fd-gulp-cssconcat": "duplicate of gulp-concat",
102 | "fd-gulp-cssmin": "duplicate of gulp-minify-css",
103 | "fd-gulp-dependencies": "duplicate of amd-optimize",
104 | "fd-gulp-jsconcat": "duplicate of gulp-concat",
105 | "fd-gulp-jsmin": "duplicate of uglify",
106 | "fd-gulp-less": "duplicate of gulp-less",
107 | "fd-gulp-removebom": "moot. already handled by gulp",
108 | "gulp-bg": "duplicate of gulp-exec",
109 | "gulp-run": "duplicate of gulp-exec",
110 | "gulp-script": "duplicate of gulp-exec",
111 | "wangjiantest": "duplicate of gulp-less",
112 | "gulp-cond": "duplicate of gulp-if",
113 | "gulp-template-handlebars": "unpublished by author",
114 | "gulp-concat-util": "duplicate of gulp-concat, gulp-tap, gulp-header, and gulp-footer",
115 | "gulp-jsbeautify": "duplicate of gulp-beautify",
116 | "gulp-jsbeautifier": "duplicate of gulp-beautify",
117 | "gulp-additem": "duplicate of gulp-add",
118 | "gulp-angular-templatecache-n3utrino": "duplicate of gulp-angular-templatecache",
119 | "gulp-bower-files": "use bower module directly and globs",
120 | "gulp-bower-src": "use bower module directly and globs",
121 | "gulp-concat-sourcemap-bom": "moot as gulp strips bom. duplicate of gulp-concat-sourcemap",
122 | "gulp-concat-vendor": "does too much. use gulp-concat instead.",
123 | "gulp-cson-safe": "duplicate of gulp-cson",
124 | "gulp-dot-precompiler": "duplicate of gulp-dotify",
125 | "gulp-dot": "duplicate of gulp-dotify",
126 | "gulp-file-activity": "duplicate of gulp-size",
127 | "gulp-file-cache": "duplicate of gulp-cache",
128 | "gulp-file-includer": "duplicate of gulp-file-include",
129 | "gulp-freeze": "duplicate of gulp-rev",
130 | "gulp-freeze-resources": "duplicate of gulp-useref",
131 | "gulp-hash-manifest": "duplicate of gulp-rev",
132 | "gulp-hash-src": "duplicate of gulp-useref",
133 | "gulp-hashmap": "duplicate of gulp-rev",
134 | "gulp-hogan-compile": "duplicate of gulp-hogan",
135 | "gulp-iconfont-css": "duplicate of gulp-iconfont",
136 | "gulp-if-else": "duplicate of gulp-if",
137 | "gulp-image": "duplicate of gulp-imagemin",
138 | "gulp-import": "duplicate of gulp-add",
139 | "gulp-intercept": "duplicate of gulp-tap",
140 | "gulp-istanbul-enforcer": "duplicate of gulp-istanbul",
141 | "gulp-less-sourcemap": "duplicate of gulp-less",
142 | "gulp-load-tasks": "duplicate of gulp-load-plugins",
143 | "gulp-load-utils": "duplicate of gulp-util",
144 | "gulp-mocha-co": "duplicate of gulp-mocha",
145 | "gulp-modified": "duplicate of gulp-changed",
146 | "gulp-modify": "duplicate of gulp-tap",
147 | "gulp-mustache-plus": "duplicate of gulp-mustache",
148 | "gulp-notify-growl": "duplicate of gulp-notify",
149 | "gulp-pako": "duplicate of gulp-gzip",
150 | "gulp-phantom": "shouldn't be a gulp plugin. use PhantomJS directly instead.",
151 | "gulp-protector": "doesn't do anything",
152 | "gulp-pipereplace": "duplicate of gulp-replace",
153 | "gulp-rev-hash": "duplicate of gulp-rev-mtime",
154 | "gulp-rm": "duplicate of gulp-rimraf",
155 | "gulp-scsslint": "duplicate of gulp-scss-lint",
156 | "gulp-sloc-simply": "duplicate of gulp-sloc",
157 | "gulp-sprite": "deprecated. use the css-sprite module instead",
158 | "gulp-sprites-preprocessor": "duplicate of gulp-sprite-generator",
159 | "gulp-svgo": "duplicate of gulp-svgmin",
160 | "gulp-swig-jst": "duplicate of gulp-swig-precompile",
161 | "gulp-sym": "duplicate of gulp-symlink",
162 | "gulp-todos": "duplicate of gulp-todo",
163 | "gulp-token-replace": "duplicate of gulp-replace",
164 | "gulp-tslint-log": "duplicate of gulp-tslint",
165 | "gulp-untar2": "duplicate of gulp-untar",
166 | "gulp-vhash": "duplicate of gulp-useref",
167 | "gulp-ng-html2js": "duplicate of gulp-angular-templatecache",
168 | "gulp-templatecache": "duplicate of gulp-angular-templatecache",
169 | "gulp-slack": "not a gulp plugin",
170 | "fd-gulp-chinese2unicode": "inaccessible repo",
171 | "fd-gulp-convert-encoding": "inaccessible repo",
172 | "fd-gulp-encodingfilter": "inaccessible repo",
173 | "fd-gulp-styleversion": "inaccessible repo",
174 | "favicon-generator": "unpublished by author",
175 | "gulp-remove-files": "operates directly on file paths",
176 | "gulp-retina-sprite": "missing documentation",
177 | "gulp-update": "not a gulp plugin",
178 | "gulp-uncache": "works files from outside the stream",
179 | "gulp-execsyncs": "synchronous. use gulp-exec instead",
180 | "gulp-tsc": "operates directly on file paths. does too much.",
181 | "gulp-sketch": "operates directly on file paths. creates a folder outside the stream.",
182 | "gulp-purs": "duplicate of gulp-purescript",
183 | "gulp-through-child": "duplicate of gulp-spawn",
184 | "gulp-spawn-xcodebuild": "just use gulp-spawn",
185 | "dustin": "not a gulp plugin",
186 | "gulp-am-transport": "missing repo link and description",
187 | "fdlintjs": "not a gulp plugin",
188 | "gulp-cache-manifest": "duplicate of gulp-manifest",
189 | "gulp-appcache": "duplicate of gulp-manifest",
190 | "gulp-backtrace": "missing description",
191 | "gulp-html-optimizer": "missing description",
192 | "gulp-html-minifier": "duplicate of gulp-htmlmin",
193 | "gulp-cleanhtml": "duplicated functionality of gulp-htmlmin",
194 | "gulp-component-build": "duplicate of gulp-component",
195 | "gulp-component-builder": "duplicate of gulp-component",
196 | "gulp-component-updater": "not a gulp plugin",
197 | "gulp-compressor": "does too much",
198 | "gulp-composer": "not a gulp plugin",
199 | "gulp-concat-coffee": "unpublished by author",
200 | "gulp-compass": "not a gulp plugin",
201 | "gulp-concat-sourcemap": "gulp-concat supports source maps",
202 | "gulp-css-combo": "not a gulp plugin",
203 | "gulp-base64": "duplicate of gulp-css-base64",
204 | "gulp-download-atom-shell": "not a gulp plugin",
205 | "gulp-dummy-json": "not a gulp plugin",
206 | "gulp-dust-html": "duplicate of gulp-dust-render",
207 | "gulp-ect-compile": "duplicate of gulp-ect",
208 | "gulp-ember-emblem": "duplicate of gulp-emblem",
209 | "gulp-express-serice": "misspelling of gulp-express-service",
210 | "gulp-express-service": "not a gulp plugin",
211 | "gulp-fix-windows-source-maps": "use gulp-sourcemaps",
212 | "gulp-headerfooter": "use gulp-header or gulp-footer",
213 | "gulp-insert": "use gulp-header or gulp-footer",
214 | "gulp-folders": "not a gulp plugin",
215 | "gulp-hexuglify": "duplicate of gulp-uglify",
216 | "gulp-highlight": "missing description",
217 | "gulp-jquery-closure": "use gulp-wrap",
218 | "gulp-iconv-lite": "missing description",
219 | "gulp-prettify": "duplicate of gulp-html-prettify",
220 | "gulp-hsp-compiler": "deprecated, use gulp-hashspace instead",
221 | "gulp-hsp-transpiler": "deprecated, use gulp-hashspace instead",
222 | "gulp-jslint-simple": "duplicate of gulp-jslint",
223 | "gulp-jstemplate-compile": "duplicate of gulp-jst",
224 | "gulp-jstemplater": "duplicate of gulp-jst-concat",
225 | "gulp-kissy-xtemplate": "missing description",
226 | "gulp-layoutize": "duplicate of gulp-consolidate",
227 | "gulp-less-templates": "duplicate of gulp-less",
228 | "gulp-litmus": "missing description",
229 | "gulp-local-screenshots": "not a gulp plugin",
230 | "gulp-mailgun": "not a gulp plugin",
231 | "gulp-map": "not a gulp plugin",
232 | "gulp-minifier": "does too much",
233 | "gulp-msbuild": "not a gulp plugin",
234 | "gulp-replace-task": "duplicate of gulp-replace",
235 | "gulp-rev-cleaner": "renamed to gulp-rev-outdated",
236 | "gulp-size2": "duplicate of gulp-size",
237 | "gulp-skin": "missing repo link and description",
238 | "gulp-slash": "not a gulp plugin and moot",
239 | "gulp-sass-alt": "duplicate of gulp-sass",
240 | "gulp-traceur-out": "duplicate of gulp-traceur",
241 | "gulp-switch": "duplicate of gulp-if",
242 | "gulp-webshot": "not a gulp plugin",
243 | "gulp-webserver": "not a gulp plugin",
244 | "gulp-wrapper": "duplicate of gulp-wrap",
245 | "gulp-ziey-ruby-haml": "duplicate of gulp-ruby-haml",
246 | "gulp.bless": "duplicate of gulp-bless",
247 | "gulp-jsx": "duplicate of gulp-react",
248 | "gulp-unpathify": "use the `unpathify` module directly",
249 | "gulp-filter-by": "duplicate of gulp-filter",
250 | "gulp-inline-source": "duplicate of gulp-smoosher",
251 | "grunt-favicons-tasks": "use the `favicons` module directly",
252 | "gulp-traceur-compiler": "duplicate of gulp-traceur",
253 | "gulp-node-inspector": "not a gulp plugin, very bad patterns",
254 | "gulp-lodash-template": "duplicate of gulp-template",
255 | "gulp-template-compile": "duplicate of gulp-template",
256 | "gulp-lodash-jst": "duplicate of gulp-template",
257 | "gulp-6to5": "deprecated in favor of gulp-babel",
258 | "gulp-jest": "use the `jest` module directly",
259 | "gulp-karma": "use the `karma` module directly",
260 | "gulp-concat-json2": "duplicate of gulp-concat-json, missing documentation",
261 | "gulp-jscs-custom": "duplicate of gulp-jscs",
262 | "gulp-origin-stylus": "duplicate of gulp-stylus",
263 | "gulp-handlebars-compiler": "missing documentation, does basically nothing",
264 | "daguike-gulp-rev-del": "duplicate of rev-del",
265 | "gulp-casperjs": "not a gulp plugin",
266 | "gulp-tsb": "duplicate of gulp-typescript",
267 | "gulp-tsc-sushicutta": "duplicate of gulp-typescript",
268 | "gulp-type": "renamed to gulp-typescript",
269 | "gulp-typescript-alpha-1.5.0": "duplicate of gulp-typescript",
270 | "gulp-typescript-package": "use gulp-typescript, gulp-uglify and gulp.dest",
271 | "gulp-electron": "not a gulp plugin",
272 | "gulp-props2json": "duplicate of gulp-props",
273 | "gulp-properties": "not a gulp plugin",
274 | "gulp-babel-transpiler": "duplicate of gulp-babel",
275 | "gulp-uglifyjs-wrapper": "duplicate of gulp-uglify",
276 | "gulp-livereload": "abandoned. use gulp-refresh",
277 | "gulp-minify-css": "deprecated. use gulp-clean-css.",
278 | "gulp.livereload": "not maintained anymore. use gulp-refresh",
279 | "gulp-cssnano": "use gulp-clean-css or cssnano with gulp-postcss",
280 | "gulp-lodash-autobuild": "promotes anti-patterns, use child_process",
281 | "gulp-better-rollup": "use rollup-stream, gulp-rollup, or the `rollup` module directly",
282 | "@absolunet/gulp-include": "fork of gulp-include, use the original module",
283 | "gulp-uglify-es": "duplicate of gulp-uglify. ES6/ES2015 support via https://github.com/terinjokes/gulp-uglify#using-a-different-uglifyjs"
284 | }
285 |
--------------------------------------------------------------------------------