Есть ли способ заставить Stylus использовать пути src и dest, которые не содержат каталог "stylesheets"? - PullRequest
4 голосов
/ 10 февраля 2012

Я недавно начал использовать Node и Stylus и столкнулся с этой проблемой.Я хочу сохранить мои сгенерированные css в / public / css, а не / public / stylesheets, и кажется, что параметры конфигурации Stylus не позволят этого.

// ... your middleware here
app.use(stylus.middleware({
    src: __dirname + '/views',     // .styl files are located in `views/stylesheets`      
    dest: __dirname + '/public',   // .styl resources are compiled `/stylesheets/*.css`     
    compile: function(str, path) {
        return stylus(str)
            .set('filename', path)
            .set('warn', true)
            .set('compress', true);
    }
}));

Комментарии в приведенном выше кодеиз примера стилуса.Для свойств src и dest автоматически добавляется "/ stylesheets" (как видно из комментариев исходного примера).Это кажется ненужным, и я думаю, мне интересно, есть ли способ отключить это.

Ответы [ 3 ]

1 голос
/ 20 марта 2012

В данный момент это невозможно, из того, что я получаю из запроса на получение # 128 .Обходной путь - вложение дополнительного каталога в соответствии с путем, сгенерированным промежуточным программным обеспечением, который кажется более уродливым, чем сама проблема.

Если предположить, что путь HTTP-запроса равен /css/file.css, структура dir должна выглядеть следующим образом:1006 *

/view/stylesheets/css/*.styl
/public/css/*.css

и ваша конфигурация промежуточного программного обеспечения должна выглядеть следующим образом:

debug: true,   // Set this flag to see what the middleware is doing
src: __dirname + '/views/stylesheets',
dest: __dirname + '/public',

(я не пробовал этого, но дело в том, чтобы соответствовать тому, что ожидает промежуточное программное обеспечение.)

0 голосов
/ 03 февраля 2014

Я столкнулся с такой же проблемой, как эта.Я использовал src как функцию. Например: ваш http-запрос

GET /css/style.css

, затем замените /css и найдите в папке stylesheets.

app.use(stylus.middleware({
   src: function( path ){
       // print it for debug
       console.log( path );
       return  require('path').join(
           __dirname + '/views/stylesheets',
           path.replace('/css' ,'').replace('.css', '.styl')
       );
   },
   dest:__dirname + '/public' ,
   debug: true,
   ...

он сгенерируетcss файлы в папке __dirname + '/public/css/

или

создайте папку css в __dirname + '/views/stylesheets' и переместите в нее *.styl файлы

app.use(stylus.middleware({
   src: __dirname + '/views/stylesheets',
   dest:__dirname + '/public' ,
   debug: true,
   ...       
0 голосов
/ 10 февраля 2012

Вы пробовали:

  src: __dirname + '/views/stylesheets',
  dest: __dirname + '/public/css',  

Глядя на код: https://github.com/LearnBoost/stylus/blob/master/lib/middleware.js

Это должно работать, так как относительный путь файла стилуса (к src dir) больше не содержит таблицы стилей. Ничто не добавлено само по себе.

...