protoss v4.0.3
Protoss
Gulp-tasks collection for frontend building.
Usage example
Features
- Compile Pug (ex Jade) templates. Use PostHTML plugins.
- Compile SCSS in separate result files (bundles), use
globimports. Add vendor prefixes, optimize css, write source maps. Support custom PostCSS. - Bundle JavaScript with Webpack.
- Generate multiple png-sprites with retina support.
- Generate multiple svg-sprites with png-fallback.
- Generate multiple svg-icons sets.
- Optimize images.
- Generate favicons.
- Lint SCSS. Validate HTML with W3C.
- BrowserSync include.
- Add Protoss-tasks to you workflow, configure it as you need.
Installation
Install gulp-cli:
$ npm install -g gulp-cliInstall gulp and protoss local in you project:
$ npm install --save-dev gulp protoss Add protoss require in you gulpfile.js:
const gulp = require('gulp');
const config = {};
require('protoss')(gulp, config);Now you can use Protoss tasks.
Tasks
Common
protoss/build - build production version
protoss/dev - build development version
protoss/watch - protoss/dev + run all watchers
protoss/watch-and-sync - protoss/watch + start browsersync server
Templates
protoss/templates - compile templates
protoss/templates:build - compile templates with all optimizations
protoss/templates:watch - watch for templates sources and recompile HTML after changes
protoss/templates:w3c-test - validate compiled HTML
Styles
protoss/styles - build styles bundles
protoss/styles:build - build styles bundles with all optimizations
protoss/styles:watch - watch for styles sources and recompile css after changes
protoss/styles:lint - lint SCSS with stylelint
Webpack
protoss/webpack - run webpack
protoss/webpack:build - set NODE_ENV = 'production' and run webpack
protoss/webpack:watch - run webpack with force set watch: true
Images
protoss/images - copy images from source to destination folder
protoss/images:watch - watch for source images changes and run protoss/images task
protoss/images:optimize - optimize images
protoss/images:build - run protoss/images and then protoss/images:optimize tasks
protoss/icons - make icons sprite (svg symbols)
protoss/icons:watch - watch for icons changes and make sprite
protoss/sprites - generate png-sprites
protoss/sprites:watch - watch for changes and generate png-sprites
protoss/sprites-svg - generate svg-sprites
protoss/sprites-svg:watch - watch for changes and generate svg-sprites
protoss/favicons - generate favicons
Utils
protoss/copy - copy files from source to destination
protoss/del - delete files
protoss/serve - run browsersync
Configuration
Default
module.exports = {
templates: {
enabled: true,
src: './src/templates/**/*.pug',
dest: './build/',
filter: function(file) {
const path = file.path.replace(/\\/g, '/');
const relative = file.relative.replace(/\\/g, '/');
return !/\/_/.test(path) && !/^_/.test(relative);
},
inheritance: {
basedir: '/src/templates/',
skip: 'node_modules',
},
data: {},
prettify: true,
posthtml: false,
w3c: {
src: './build/*.html',
},
},
styles: {
bundles: [
{
name: 'app',
src: './src/styles/app.scss',
dest: './build/static/css/',
watch: [
'./src/styles/**/*.scss',
'./temp/**/*.scss',
],
postcss: false,
sourceMaps: true,
cssnanoConfig: {
autoprefixer: false,
discardComments: {
removeAll: true,
},
colormin: false,
convertValues: false,
zindex: false,
discardDuplicates: true,
},
},
],
lint: {
src: [
'./src/styles/**/*.scss',
'!./temp/**/*.scss',
],
config: {
reporters: [
{ formatter: 'string', console: true },
],
},
},
},
webpack: {
enabled: true,
src: './src/scripts/',
dest: './build/static/js/',
webpackConfig: fs.existsSync(webpackConfigPath) ? require(webpackConfigPath) : null,
},
images: {
enabled: true,
src: ['./src/resources/images/**/*.{png,jpg,gif,svg}'],
dest: './build/static/images/',
minPath: './build/static/images/**/*.{png,jpg,gif,svg}',
},
sprites: {
enabled: true,
src: './src/sprites/png/**/*.png',
dest: './build/static/images/sprites/',
retina: true,
stylesName: '_sprites.scss',
stylesDest: './temp/sprites/',
template: __dirname + '/assets/sprite.mustache',
templateData: {
spritePath: '#{$pathToImages}sprites/',
},
},
spritesSvg: {
enabled: true,
src: './src/sprites/svg/',
dest: './build/static/images/sprites-svg/',
stylesName: '_sprites-svg.scss',
stylesDest: './temp/sprites/',
template: __dirname + '/assets/sprite-svg.mustache',
templateData: {
spritePath: '#{$pathToImages}sprites-svg/',
},
fallback: false,
},
icons: {
enabled: true,
src: './src/icons/',
dest: './build/static/images/icons/',
},
copy: [
{
src: './src/resources/fonts/**/*',
dest: './build/fonts/',
},
],
del: [
'./build',
'./temp',
],
favicons: {
enabled: true,
src: './src/resources/favicon-master.png',
dest: './build/static/favicons/',
config: {
appName: 'Protoss',
background: '#ffffff',
path: '/static/favicons/',
display: 'standalone',
orientation: 'portrait',
version: 2.0,
logging: false,
online: false,
html: false,
replace: true,
icons: {
favicons: true,
android: true,
appleIcon: true,
windows: false,
appleStartup: false,
coast: false,
firefox: false,
opengraph: false,
twitter: false,
yandex: false,
},
},
},
serve: {
browsersync: {
open: true,
port: 9001,
server: {
directory: true,
baseDir: './build/',
},
files: ['./build/'],
startPath: '/',
reloadDelay: 300,
reloadDebounce: 300,
injectChanges: false,
logConnections: true,
debugInfo: true,
browser: 'default',
ghostMode: {
clicks: false,
forms: false,
scroll: false,
},
watchOptions: {
ignoreInitial: true,
},
},
},
}Templates
templates.enabled (boolean) - use templates tasks.
templates.src (string|array) - path to templates source files.
templates.dest (string) - compiled HTML destination.
templates.filter (function) - function for filter out files.
templates.inheritance (object) - configuration for gulp-pug-inheritance.
templates.data (object) - data, passed to templates.
templates.prettify (boolean) - prettify final HTML (use config from .jsbeautifyrc file in project root).
templates.posthtml (boolean|object) - config for https://www.npmjs.com/package/gulp-posthtml.
templates.w3c.src (string|array) - path to HTML files to test validity with W3C.
Styles
styles.enabled (boolean) - use styles tasks.
styles.bundles (array) - array of bundles.
styles.bundles.%bundle%.name (string) - name of bundle (name of final file).
styles.bundles.%bundle%.src (string|array) - path to bundle source files.
styles.bundles.%bundle%.dest (string) - destination of bundle file.
styles.bundles.%bundle%.watch (string|array) - path for watch files of this bundle. If not set src will be used.
styles.bundles.%bundle%.postcss (boolean|array) - array of PostCSS plugins. In build included: cssnano, autoprefixer and css-mqpacker.
styles.bundles.%plugin%.processor (object) - PostCSS processor.
styles.bundles.%plugin%.options (options) - options for processor.
styles.bundles.%bundle%.sourceMaps (boolean) - generate sourcemaps for this bundle.
styles.bundles.%bundle%.cssnanoConfig (object) - config for cssnano.
styles.lint.src (string|array) - path to files that will be checked by stylelint.
styles.lint.config (object) - config for gulp-stylelint.
Scripts
scripts.enabled (boolean) - use scripts tasks.
scripts.webpackConfig (object|function) - webpack config.
Images
images.enabled (boolean) - use images tasks.
images.src (string|array) - images source.
images.dest (string) - images destination.
images.minPath (string|array) - path for minifying images.
Sprites
sprites.enabled (boolean) - use png sprites.
sprites.src (string) - path to source folders. Each folder - separate sprite.
sprites.dest (string) - destination for sprite.
sprites.retina (boolean) - create retina sprites (each icon need to be in to sizes: icon.png and icon@2x.png).
sprites.stylesName (string) - name of sprite styles file.
sprites.stylesDest (string) - destination of sprite styles file.
sprites.template (string) - template for styles file.
sprites.templateData (object) - data, passed to styles template.
SVG sprites
spritesSvg.enabled (boolean) - use svg sprites.
spritesSvg.src (string) - path to source folders. Each folder - separate sprite.
spritesSvg.dest (string) - destination for sprite.
spritesSvg.stylesName (string) - name of sprite styles file.
spritesSvg.stylesDest (string) - destination of sprite styles file.
spritesSvg.template (string) - template for styles file.
sprites.templateData (object) - data, passed to styles template.
spritesSvg.fallback (boolean) - create png-fallback.
Icons
icons.enabled (boolean) - use svg icons.
icons.src (string) - path to source folders. Each folder - separate icon set.
icons.dest (string) - destination for icon sets.
Copy
copy (array) - copy tasks.
copy.%tasks%.src (string) - path to source files.
copy.%tasks%.dest (string) - path to copy destination.
Del
del (array) - array of pathes to delete.
Favicons
favicons.enabled (boolean) - generate favicons.
favicons.src (string) - path to favicon source file.
favicons.dest (string) - favicons destination.
favicons.config (object) - config for Favicons.
Serve
serve.browsersync (object) - BrowserSync config.
License
The MIT License
Copyright (c) 2017 Andrey Hohlov
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago