diff --git a/README.md b/README.md index af8bf60..3a68e73 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,32 @@ module.exports = { test: /fileInWhichJQueryIsUndefined\.js$/, loader: 'string-replace', query: { - search: 'jquery', - replace: 'window.$', - flags: 'i' + search: /jquery/i, + replace: 'window.$' + } + } + ] + } +} +``` + +### Array replacement: + +In your `webpack.config.js`: + +```javascript +module.exports = { + // ... + module: { + loaders: [ + { + test: /\.js$/, + loader: 'string-replace', + query: { + multiple: [ + {search: 'framework', replace: 'flamewar'}, + {search: 'ants', replace: 'super ants'}, + ] } } ] diff --git a/index.js b/index.js index 91b2f74..b0e96f7 100644 --- a/index.js +++ b/index.js @@ -1,16 +1,28 @@ var utils = require('loader-utils'); -module.exports = function (source) { +function processQuery(source, option) { + if (typeof option.search !== 'undefined' && typeof option.replace !== 'undefined') { + return source.split(option.search).join(option.replace); + } + + return source; +} + +module.exports = function(source) { this.cacheable(); + var query = utils.parseQuery(this.query); - if (typeof query.search !== 'undefined' && typeof query.replace !== 'undefined') { - if (typeof query.flags !== 'undefined') { - query.search = new RegExp(query.search, query.flags); + if (Array.isArray(query.multiple)) { + var length = query.multiple.length; + + for (var i = 0; i < length; i++) { + var option = query.multiple[i]; + source = processQuery(source, option); } - source = source.replace(query.search, query.replace); + return source; } - return source; + return processQuery(source, query); };