4

最近、Node と Stylus の使用を開始しましたが、この問題に遭遇しました。生成した css を /public/stylesheets ではなく /public/css に保持したいのですが、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);
    }
}));

上記のコードのコメントは、Stylus の例からのものです。src および dest プロパティの場合、"/stylesheets" が自動的に追加されます (元の例のコメントが示すように)。これは不要なようで、それをオフにする方法があるかどうか疑問に思っています。

4

3 に答える 3

1

これは、プルリクエスト#128から収集したものから、現時点では不可能です。回避策は、ミドルウェアによって生成されたパスと一致するように追加のディレクトリをネストすることです。これは、問題自体よりも醜いようです。

HTTP リクエスト パスが であると仮定すると、/css/file.cssdir 構造は次のようになります。

/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',

(私はこれを試していませんが、ポイントはミドルウェアが期待するものと一致させることです。)

于 2012-03-20T15:56:10.847 に答える
0

やってみました:

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

コードを見る: https://github.com/LearnBoost/stylus/blob/master/lib/middleware.js

スタイラス ファイルの相対パス (src dir への) にスタイルシートが含まれなくなったため、これは機能するはずです。それ自体は何も追加されません。

于 2012-02-10T05:10:16.400 に答える
0

このような同じ問題に直面しました。私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,
   ...       
于 2014-02-03T13:05:23.950 に答える