Разрешение CSS-подпакетов NodeJS?
Я создаю библиотеку CSS, и я хотел бы поддерживать подпакеты так же, как это делает RxJS. Например, с помощью RxJS мы можем импортировать всю кухонную раковину следующим образом (взято с https://www.npmjs.com/package/rxjs):
var Rx = require('rxjs/Rx');
Rx.Observable.of(1,2,3); // etc
Или отдельные операторы, как это:
var Observable = require('rxjs/Observable').Observable;
// patch Observable with appropriate methods
require('rxjs/add/observable/of');
require('rxjs/add/operator/map');
Мое первоначальное наблюдение состоит в том, что это может быть так же просто, как просто упаковать модули в подпапки корневого модуля. Например RxJS node_modules
папка установки имеет подпапку rxjs/add/observable
который содержит все наблюдаемые расширения, такие как zip.js, throw.js...
, так далее.
Поэтому, следуя этому шаблону, postcss-import может быть расширен для разрешения импорта в папки подмодулей таким же образом. Например:
@import @superflycss/utilities-layout/margins
Будет импортировать node_modules/superflycss/utilities-layout/margins.css
и если этого не существует, он будет искать node_modules/superflycss/utilities-layout/margins/index.css
и если этого не существует, он выдаст ошибку.
@import @superflycss/utilities-layout/margins/
Будет импортировать node_modules/superflycss/utilities-layout/margins/index.css
только.
Модули, которые я выпускаю, имеют упакованную кухонную раковину в каталоге target/main/css/index.css
, Это открывает все утилиты или компоненты CSS (в зависимости от типа модуля).
Проблема в том, что, как и в RxJS, это может быть очень тяжелый файл (например, содержать импорт для всех Google шрифтов).
Поэтому я надеюсь, что следуя подходу RxJS, все становится более гибким и стандартизированным, следуя тем же правилам, которые использует алгоритм NodeJS require.resolv(). Мысли?
1 ответ
PostCSS поддерживает импорт подмодулей так же, как RxJS. Я добавил опрашивающий запрос с тестовыми примерами, который иллюстрирует, как это делается здесь.