стилус не может решить @import - PullRequest
0 голосов
/ 16 декабря 2018

Я столкнулся с проблемой при компиляции файла стилуса .styl в css.Если файл стилуса содержит @import, я получаю сообщение об ошибке «Не удалось найти файл @import».Например, у меня есть два простых файла стилуса:

root
  - specific
     - particularButton.styl
  - button.styl

// --- button.styl ---
.button
  // some styles

// --- specific/particularButton.styl ---
@import "../button.styl"
.particular-button
    // some styles

, и я пытаюсь преобразовать их в CSS с помощью этого кода:

const stylus = require('stylus');
const fs = require('fs');

const filePath = // path to particularButton.styl

stylus(fs.readFileSync(filePath, 'utf8'))
    .set('paths', [
        // path to a folder that contain "button.styl"
    ])
    .render(function(err, css) {
        console.log(err);
        // <some action like> fs.writeFileSync(cssFileName, css);
    })

В соответствии с API стилуса я пыталсячтобы он работал с .set('path' ... и без этой настройки.Но без успеха.

Может ли кто-нибудь помочь с этим?

PS среда: OSX Mohave, узел: 6.9.1, npm: 6.4.1, стилус: 0.54.5

Upd

Проблема в относительном пути @import "../button.styl".Если я заменю его абсолютным путем к button.styl, он станет работать.Но, похоже, это довольно плохое решение ...

1 Ответ

0 голосов
/ 16 декабря 2018

Хорошо, я только что узнал.

Моя проблема в том, что я пытаюсь добавить неправильный путь в методе .set().Вероятно, это было немного неясно задокументировано, idk.

В случае относительного импорта в particularButton.styl необходимо добавить путь к самому файлу.Не импортирующий файл.Так и должно быть:

stylus(fs.readFileSync(filePath, 'utf8'))
    .set('paths', [
        // path to a folder that contain "particularButton.styl"
    ])
...