url.js 1.22 KB
/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
var path = require('path');

var loaderUtils = require('loader-utils');
var validateOptions = require('schema-utils');

module.exports = function () {};

module.exports.pitch = function (request) {
	if (this.cacheable) this.cacheable();

	var options = loaderUtils.getOptions(this) || {};

	validateOptions(require('./options.json'), options, 'Style Loader (URL)');

	options.hmr = typeof options.hmr === 'undefined' ? true : options.hmr;

	var hmr = [
		// Hot Module Replacement
		"if(module.hot) {",
		"  module.hot.accept(" + loaderUtils.stringifyRequest(this, "!!" + request) + ", function() {",
		"    update(require(" + loaderUtils.stringifyRequest(this, "!!" + request) + "));",
		"  });",
		"",
		"  module.hot.dispose(function() { update(); });",
		"}"
	].join("\n");

	return [
		// Adds some reference to a CSS file to the DOM by adding a <link> tag
		"var update = require(" + loaderUtils.stringifyRequest(this, "!" + path.join(__dirname, "lib", "addStyleUrl.js")) + ")(",
		"  require(" + loaderUtils.stringifyRequest(this, "!!" + request) + ")",
		", " + JSON.stringify(options) + ");",
		options.hmr ? hmr : ""
	].join("\n");
};