0

package.json で次のように sass コンパイルをセットアップしました。

"scripts": {
    "sass": "node-sass sass/app.scss --source-map-root file://${PWD}/ --source-map-embed true",
    "postcss:autoprefixer": "postcss --use autoprefixer -b 'last 2 versions' --map",
    "css": "npm run sass -s | npm run postcss:autoprefixer -s | exorcist css/app.css.map > css/app.css"
  }

これは、しばらくの間、外部ソースマップを作成するために正常に実行されています。ただし、最近、postcss がクローズされていないコメント エラーをスローして失敗しています。問題のコメントは、sourceMappingURL への開始タグです。sourceMappingURL は、node-sass によって--source-map-embed trueコマンドを使用して dataUri として埋め込まれています。これは、出力を stdout にパイプしている場合、node-sass がそれらをファイルに書き込まないように見えるため、ソース マップがこのメソッドでまったく機能するために必要です。 .

dataUri が長すぎて、ある種の最大行長に達していると思います。この制限が bash (私は Mac OSX を使用しています)、node.js、または postcss-cli にあるのかどうかはわかりません。手動で増やすことができるものですか、それとも他の回避策はありますか?

更新:さらに調査した結果、この問題は、process.stdin から不完全なファイルを返すread-file-stdin に起因するようです。私はノード ストリームにあまり詳しくありませんが、データの読み取りにread-file-stdin依存しており、ストリーム チャンクを一緒に収集するためにgather-streamを使用していると思います。ただし、これは機能していません。スクリプトを次のように変更すると、次の場所は次のとおりです。stream.pipecssnpm run sass -s | test.jstest.js

#!/usr/bin/env node
const gather = require( 'gather-stream' );

process.stdin.pipe( gather( complete ) );

function complete ( err, data ) {
    console.log( data.toString( 'utf8' ) );
}

コンソール出力は不完全なファイルです

4

1 に答える 1