English | 简体中文
Create some bundles for multi-target environment which from string replace options
-- by keruyun.com
npm i -D webpack-plugin-create-multiple-bundle-from-string-replaceconst MultipleBundle = require('webpack-plugin-create-multiple-bundle-from-string-replace'); const config = { plugins: [ new MultipleBundle({ targetOne: [ ['HOST_API', 'HOST_CDN'], // find , may contain Regular Expressions, /HOST_API/ ['//targetOne.you-company.com/api', '//targetOne.you-company.com/cdn'], // replace ], targetTwo: [ ['HOST_API', 'HOST_CDN'], ['//targetTwo.you-company.com/api', '//targetTwo.you-company.com/cdn'], ], }), ], };Then get two bundles directory (targetOne, targetTwo) in which all text type of files are replaced by above options:
${webpack.config.output.path}/multiple-bundle-from-string-replace/(targetOne|targetTwo)dist ├── ...originOutput │ └── multiple-bundle-from-string-replace ├── targetOne │ ├── ...replacedOutput │ └── ...replacedOutput └── targetTwo ├── ...replacedOutput └── ...replacedOutputconst MultipleBundle = require('webpack-plugin-create-multiple-bundle-from-string-replace'); const config = { plugins: [ new MultipleBundle([ ['HOST_API', 'HOST_CDN'], // find , may contain Regular Expressions, /HOST_API/ ['//targetOne.you-company.com/api', '//targetOne.you-company.com/cdn'], // replace ]), ], };Then get origin bundles directory which all text type of files are replaced by above options:
${webpack.config.output.path}/dist └── ...replacedOutput'HOST_API' => '//targetOne.you-company.com/api' 'HOST_CDN' => '//targetOne.you-company.com/cdn'Used replace-one.
replaceOnce(fileContent, find, replace, 'g');
var str = 'abc abcd a ab'; var find = ['abcd', 'abc', 'ab', 'a']; var replace = ['a', 'ab', 'abc', 'abcd']; replaceOnce(str, find, replace, 'g'); //=> 'ab a abcd abc'thanks: https://github.com/kodie/replace-once
MIT. See the license.md file for more info.