Merge pull request #37 from nicoabie/exclude-features

Feature exclude
This commit is contained in:
Alexandru Dima 2018-09-20 10:45:00 +02:00 committed by GitHub
commit 1bd93df64b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 713 additions and 677 deletions

View file

@ -28,10 +28,31 @@ const languagesById = fromPairs(
);
const featuresById = mapValues(FEATURES, (feature, key) => mixin({ label: key }, feature))
function getFeaturesIds(userFeatures, predefinedFeaturesById) {
function notContainedIn(arr) {
return (element) => arr.indexOf(element) === -1;
}
let featuresIds;
if (userFeatures.length) {
const excludedFeatures = userFeatures.filter(f => f[0] === '!').map(f => f.slice(1));
if (excludedFeatures.length) {
featuresIds = Object.keys(predefinedFeaturesById).filter(notContainedIn(excludedFeatures))
} else {
featuresIds = userFeatures;
}
} else {
featuresIds = Object.keys(predefinedFeaturesById);
}
return featuresIds;
}
class MonacoWebpackPlugin {
constructor(options = {}) {
const languages = options.languages || Object.keys(languagesById);
const features = options.features || Object.keys(featuresById);
const features = getFeaturesIds(options.features || [], featuresById);
const output = options.output || '';
this.options = {
languages: languages.map((id) => languagesById[id]).filter(Boolean),