Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - dwd-fe/gulp-css-spriter: Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets. · GitHub
Skip to content

Repository files navigation

npm versionBuild Status

gulp-css-spriter

gulp-css-spriter, a gulp plugin, looks through the CSS you pipe in and gathers all of the background images. It then creates a sprite sheet and updates the references in the CSS.

You can easily exclude/include certain background image declarations using meta info in your styles(see meta section below) and includeMode option(see options section below) depending on your use case.

Install

npm install gulp-css-spriter

About

gulp-css-spriter uses spritesmith behind the scenes for creating the sprite sheet.

Usage

Basic usage

This is most likely the setup you will probably end up using.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./src/css/styles.css').pipe(spriter({// The path and file name of where we will save the sprite sheet'spriteSheet': './dist/images/spritesheet.png',// Because we don't know where you will end up saving the CSS file at this point in the pipe,// we need a litle help identifying where it will be.'pathToSpriteSheetFromCSS': '../images/spritesheet.png'})).pipe(gulp.dest('./dist/css'));});

Barebones usage

The slimmest usage possible.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');gulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(gulp.dest('./'));});

Minify CSS output usage

If you want to use @meta data but are using a preprocessor such as Sass or Less, you will need to use a output style that doesn't strip comments. After piping the CSS through gulp-css-spriter, you can then run it through a CSS minifier(separate plugin), such as gulp-minify-css.

vargulp=require('gulp');varspriter=require('gulp-css-spriter');varminifyCSS=require('gulp-minify-css');// https://www.npmjs.com/package/gulp-minify-cssgulp.task('css',function(){returngulp.src('./styles.css').pipe(spriter()).pipe(minifyCSS()).pipe(gulp.dest('./'));});

Options

  • options: object - hash of options
    • includeMode: string - Determines whether meta data is necessary or not
      • Values: 'implicit', 'explicit'
      • Default: 'implicit'
      • For example, if explicit, you must have meta include as true in order for the image declarations to be included in the spritesheet: /* @meta {"spritesheet": {"include": true}} */
      • If left default at implicit, all images will be included in the spritesheet; except for image declarations with meta include as false: /* @meta {"spritesheet": {"include": false}} */
    • spriteSheet: string - The path and file name of where we will save the sprite sheet
      • Default: 'spritesheet.png'
    • pathToSpriteSheetFromCSS: string - Because we don't know where you will end up saving the CSS file at this point in the pipe, we need a litle help identifying where it will be. We will use this as the reference to the sprite sheet image in the CSS piped in.
      • Default: 'spritesheet.png'
    • spriteSheetBuildCallback: function - Same as the spritesmith callback
      • Default: null
      • Callback has a parameters as so: function(err, result)
        • result.image: Binary string representation of image
        • result.coordinates: Object mapping filename to {x, y, width, height} of image
        • result.properties: Object with metadata about spritesheet {width, height}
    • silent: bool - We ignore any images that are not found but are supposed to be sprited by default
      • Default: true
    • shouldVerifyImagesExist: bool - Check to make sure each image declared in the CSS exists before passing it to the spriter. Although silenced by default(options.silent), if an image is not found, an error is thrown.
      • Default: true
    • spritesmithOptions: object - Any option you pass in here, will be passed through to spritesmith. See spritesmith options documenation
      • Default: {}
    • outputIndent: bool - Used to format output CSS. You should be using a separate beautifier plugin. The reason the output code is reformatted is because it is easier to "parse->stringify" than "replace in place".
      • Default: '\t'

What we emit

gulp-css-spriter emits the transformed CSS with updated image references to the sprite sheet as a normal Gulp vinyl file.

We also attach the binary sprite sheet image in chunk.spriteSheet in case you want to consume it later down the pipe.

Meta info

gulp-css-spriter uses a JSON format to add info onto CSS declarations.

The example below will exclude this declaration from the spritesheet.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png');

Please note that if you are compiling from Sass/Less and are not getting correct results, to check the outputted CSS and make sure the comments are still in tact and on the line you expect. For Sass, use multiline /* */ comment syntax and put them above declarations. This is because gulp-sass/node-sass/libsass removes single line comments and puts mult-line comments that are on the same line as a declaration, below the declaraton.

The @meta comment data can be above or on the same line as the declaration for it to apply.

/* @meta {"spritesheet": {"include": false}} */background:url('../images/dummy-blue.png'); /* @meta {"spritesheet": {"include": false}} */

Meta options

  • spritesheet: object - hash of options that gulp-css-spriter will factor in
    • include: bool - determines whether or not the declaration should be included in the spritesheet. This can be left undefined if the includeMode is 'implicit'

What we emit

gulp-css-spriter transforms your CSS image paths to the spritesheet appropriately then emits the CSS as a normal Gulp vinyl file.

  • Gulp vinyl file. We emit the CSS you passed in with transformed image paths

Events

.on('log', function(message) { })

We emit log messages such as when a image defined in the CSS can't be found on disk.

.on('error', function(err) { })

A normal gulp error. There are a variety of errors. See source code for more details.

Testing

We have a series of unit tests. We use Mocha.

Install Mocha globally:

npm install -g mocha

Run tests with: mocha or npm test

About

Sprite Sheet Generation from CSS source files. The best and different approach to sprite sheets.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages