Скомпилируйте каталог от s css до css, используя sass JavaScript API - не CLI. - PullRequest
0 голосов
/ 12 июля 2020

Рассмотрим следующий каталог с именем styles:

_partial1.scss
_partial2.scss
_partiala.scss
_partialb.scss
_partialx.scss
_partialy.scss
stylesheet1.scss
stylesheet2.scss
stylesheet3.scss

Используя командную строку, невероятно легко скомпилировать эти три родительских файла .s css в css, выполнив следующие действия:

dart-sass styles:dist/css

Это приводит к каталогу с именем dist/css, который содержит:

stylesheet1.css
stylesheet2.css
stylesheet3.css

Однако мне нужно также включает .s css и. css из node_modules. Следующее будет работать:

"dart-sass --load-path=node_modules/some-location-one/css --load-path=node_modules/some-location-two/css --load-path=node_modules/some-location-three/css styles:dist/styles"

Но мне нужно сделать css из node_modules настраиваемым. По этой причине я пытаюсь использовать sass JavaScript API (вместо CLI выше):

package. json:

scripts": {
    "sass": "node sassConfig.js"
  },

sassConfig. js:

const sass = require('sass');
const fs = require('fs');
const DEST_DIR = 'dist';
const DEST_AND_SUB_DIR = "dist/styles";

// check if destination directory exists. if not, create it.
if (!fs.existsSync(DEST_DIR)){
    fs.mkdirSync(DEST_DIR);
}
// check if destination/sub-directory exists. if not, create it.
if (!fs.existsSync(DEST_AND_SUB_DIR)){
    fs.mkdirSync(DEST_AND_SUB_DIR);
}

const result = sass.renderSync({
  file: "styles/one-of-many.scss", // need to do all parent .scss in this directory, not just one file
  includePaths: [
        "node_modules/some-location-one/css", // works fine
        "node_modules/some-location-two/css",
        "node_modules/some-location-three/css"      
      ],
  sourceMap: true
});

fs.writeFile( DEST_AND_SUB_DIR + "/styles.css", result.css, function (err) {
  if (err) return console.log(err);
});

Я подумываю о том, чтобы сделать проверку для родительского .s css и выполнить для l oop, а затем выполнить цикл для каждого родителя. Но это похоже на взлом. Я пролил документацию по sass и ничего не могу найти по этому поводу. Я бы подумал, что если есть простой способ сделать это в CLI, то будет эквивалент в sass JavaScript API , но я этого просто не вижу. Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...