exports-loader
Загрузчик экспортов - это загрузчик веб-пакетов, который позволяет динамически добавлять exports
предложения в загружаемые им файлы javascript. Например, в вашем файле globals.js
нет export
, только переменные file
и helpers
, но с exports-loader
он может работать , как если бы имел export
статьи.
В основном, чтобы использовать загрузчик, мы должны предоставить предложения test
и use
. test
может быть регулярным выражением, массивом или объектом, и в основном он решает, какие файлы будут использовать определенные загрузчики.
Предложение use
определяет, какие загрузчики будут применены к файлам, которые соответствуют регулярному выражению test
.
В этом случае нам следует, например, указать веб-пакету загрузить globals.js
с exports-loader
:
module: {
rules: [
{
test: /globals.js/,
use: 'exports-loader',
}
]
}
Это -afaik- самый распространенный способ использования загрузчиков. Webpack, однако, имеет много опций конфигурации и различных допустимых синтаксисов.
Как только мы сделаем это, когда webpack найдет файл require
или import
и файл globals.js
, он будет использовать exports-loader
.
С другой стороны, exports-loader
работает, изменяя вызовы require
, чтобы указать ему, как извлечь переменные в требуемом файле. Как и в их документах:
file.js
const file = 'foo';
app.js
const file = require('exports-loader?file!./file.js');
console.log(file); // foo
Итак, в основном вам нужно две вещи, чтобы заставить exports-loader
работать:
Использовать require
или import
с их специальным синтаксисом.
Загрузите загрузчик в webpack.config.js
как обычно (они пропускают это в своей документации).
Вместо этого вы пытаетесь использовать этот специфический синтаксис exports-loader
в вашем файле webpack.config.js
, а затем используете его с import
.
Итак, плохие новости заключаются в том, что exports-loader
требуется специальное форматирование в каждом операторе require
или import
, чтобы сделать его магию . Вы просто не можете указать это в своем конфигурационном файле при попытке (или, по крайней мере, я не знаю как).
Итак, чтобы заставить его работать, вам необходимо:
webpack.config.js
, как указано выше. index.js
, чтобы он использовал магию exports-loader
: import file from 'exports-loader?file!./deps.js'
console.log('the file', file);
Как простой подход , вы можете просто множить значения RGB:
Color c1 = Color.Red;
Color c2 = Color.FromArgb(c1.A,
(int)(c1.R * 0.8), (int)(c1.G * 0.8), (int)(c1.B * 0.8));
(что должно сделать его темнее; или, например, * 1,25, чтобы осветлить его)
Преобразовать из RGB в HSV (или HSL), затем уменьшить V (или L) и затем выполнить обратное преобразование.
В то время как System.Drawing.Color
предоставляет методы для получения оттенка (H), насыщенности (S) и яркости, он не обеспечивает много в плане других преобразований, ничего не выделяя для создания нового экземпляра из HSV (или значения HSV), но преобразование довольно просто реализовать. Статьи в Википедии дают приличное преимущество, начиная здесь: « HSL и HSV ».
Вот код C # для преобразований, упомянутых Ричардом:
You could also try using
ControlPaint.Light(baseColor, percOfLightLight)
or
ControlPaint.Dark(baseColor, percOfDarkDark)