私はgulp sassとgulpのソースマップを取得しています。私は、出力ファイル(dist/css/index.css)とそのインデックスファイル(dist/css/index.css.map)のための別々のソースマップを生成するために、サスペンドファイル(src/sass/index.scss) sourceRootはプロジェクトベース(絶対パス:/ home/damon/projects/test)に設定され、sourcemapエントリはそのパスとの相対パスになります。ここでソースマップの位置が間違っているか、パスが正しくない
は、私が試したものです:
試み1:ゴクゴク-サスからストレートのコード例:
var sassEntry = 'src/sass/index.scss';
gulp.src(sassEntry)
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist/css'));
結果:それは右だ場合、私は言うことができないので、これはCSSファイルにsourcemapをインライン化か否か。
試み2:
別のファイルに
gulp.src(sassEntry)
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('dist/css'));
をそれを書くアウトカムは:別のsourcemapを書き込みますが、sourceRootは '/ソース/' と言う(WTFはつまり、それは決して存在しないと私はありません?!それを構成した) とパスはすべて、プロジェクトベースではなく、私のブラウザがソースファイルの場所を見つけようとすると無意味になる予定の、Sassエントリファイルに関連しています。
試み3:
gulp.src(sassEntry)
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(sourcemaps.write('.',{includeContent: false, sourceRoot: __dirname}))
.pipe(gulp.dest('dist/css'));
アウトカム
:sourcerootがいいです、今の私の作業フォルダで、コンテンツが含まれていないいいです、:sourcerootを修正しよう(偽も私はincludeContentを見つけました)私のマップはまだ役に立たないので、しかしsourcemap内のファイルは、まだありませんsourceRootにSASSエントリファイルに関連している試み4:セットgulp.srcベース
gulp.src(sassEntry, { base: __dirname })
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(sourcemaps.write('.',{includeContent: false, sourceRoot: __dirname}))
.pipe(gulp.dest('dist/css'));
結果:怒り狂って、gulp.srcのベースを設定すると、sourcemapが修正されます - sourceRootはまだ正しいですし、ソースファイルのパスはsourceRootと相対的ですが、dist/css/src/sass/index.cssに出力します。 WTF!
試み5:絶対パスを使用
gulp.src(sassEntry, { base: __dirname })
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(sourcemaps.write('.',{includeContent: false, sourceRoot: __dirname}))
.pipe(gulp.dest(__dirname + '/dist/css'));
結果:変化なし、それはまだDISTに同じ深い構造に出力します。
誰かがこれを行う方法について私に啓発できるなら、私は永遠に感謝します。
を待たなければならないおかげで、はい、実際に周りに読んだ後、私は飲み込む-平らに使用することでした、あまりにも解決策を見つけました。どうやら、gulp.srcがglobを持つファイルを見つけたときに、それぞれのパスをパスで保存し、baseオプションを追加すると、フルパスが追加されます。 gulp-flattenはあなたのパイプラインでそれらのパスを削除することができるので、名前を変更した場所で.pipe(flatten())を実行することもできます。 –