Giter Site home page Giter Site logo

css-url-rewriter's Introduction

css-url-rewriter Build Status

NPM

Simple function that looks for url(...) definitions in a string of CSS and runs them through your own rewriter function.

Getting Started

Install the module with: npm install css-url-rewriter

var rewriteCSSURLs = require('css-url-rewriter');

// example - add a query string to all URLs
var newCSS = rewriteCSSURLs(someCSS, function (url) {
  return url + '?12345';
});

It will process all URLs it encounters by default, even data: URIs, so you need to check for those manually if you want to handle them differently. The only exception is URLs in 'excluded properties' (see settings).

Settings

You can optionally pass in a settings object as a second argument:

var newCSS = rewriteCSSURLs(someCSS, settings, function (url) {
  return url + '?12345';
});

Currently there is only one configurable setting, excludedProperties, which is an array of properties that you want to skip. This setting defaults to ['behavior', '*behavior'] (because you usually don't want to mess with URLs in this proprietary MSIE property, because it has weird relativity rules).

License

Copyright (c) 2014 Callum Locke. Licensed under the MIT license.

css-url-rewriter's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

css-url-rewriter's Issues

API changes

  • remove excludeProperties setting
  • pass the current property name (and possibly some other info) as extra arg(s) to the callback, so the callback function can decide what to do

Update cssPropertyMatcher

According to the spec, the ordering of individual background-* property values is arbitrary, so shouldn't the cssPropertyMatcher regex be a little more flexible?

I ran into this issue when declaring background-color before background-image in a background shorthand property. Here is a quick attempt to fix. The new tests are on lines 16 and 17.

The solution presented there is probably a little too loose, but take a look and see what you think.

Thanks!

Incorrectly parses CSS "propertyName" on qtip2, resulting in failure to detect excludeProperties "behavior" attribute

I believe there are probably more libraries having this problem, but it's not parsing the CSS correct.
(1) dist/jquery.qtip.css
(2) dist/jquery.qtip.min.css

The two above files were unable to avoid the "behavior" attribute. Putting a console.log on css-url-rewriter.js:46 for the variable "propertyName" tells me that it has not parsed the CSS correctly.

It returns "http" as "propertyName" when using (1)
It returns "{cursor" as "propertyName" when using (2)

I'm using version 0.1.3

Thanks!

Css Property regular expression is missing {

If the css property is the first one in the block, e.g:
.test {background-image:url(_____)}

The regular expression will miss it as it is expecting ';' or white space at the beginning.

I fixed it by adding {

var cssPropertyMatcher = /[;\s{]?[a-zA-Z-]+\s_:\s_url(\s_['"]?[^'")\s]+['"]?\s_)[^;}]/g;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.