0

次のフォルダー構造があります

_build
src
|- \images
|- \js
|- \sass

完了時に.buildフォルダーに完成したソリューションが含まれるように、gulpプロセスを構築しました

すなわち

_build\index.html
_build\images\*.*
_build\js\site.min.js
_build\css\site.css

sass ファイルをコンパイルするための gulp タスクがあり、生成されたファイルは _build\css フォルダーに正しく保存されています。

index.html ファイル内の head 要素内に次のものがあります。

<!-- inject:css -->
<!-- endinject -->

今私が取得しようとしているのは、次の注入を取得することです

<link rel="stylesheet" href="css/site.css">

しかし、私が行き着くのは何ですか

<link rel="stylesheet" href="/_build/css/site.css">

これは、注入を行うための私の gulp タスクです。ps私は$にエイリアスされたgulp-load-pluginsを使用しています

gulp.task('inject', function() {
    return gulp
        .src('./src/index.html')
        .pipe($.inject(gulp.src('./build/css/site.css', {read: false}), {relative: true}))
        .pipe(gulp.dest('./_build/'));
});

https://www.npmjs.com/package/gulp-injectのドキュメントを読んだ私の解釈に基づいて、相対オプションを使用すると、出力に /_build/ を含めるべきではありません。ただし、除外されているわけではありません。

/_build/ パスを適切に除外するように gulp-inject を設定するにはどうすればよいですか

4

1 に答える 1

0

ファイルへの相対パスを使用するようにinjectに指示しています。しかし、何に対して?まあ、あなたの注射のソースに関連しています。

ソースが次の場合:

./build/css/site.css

ツリーのディレクトリを上っているので、inject はどこにでも立って./います。つまりbuild/css/site.css、正しい相対パスです。

一方、ソースが次の場合:

build/css/site.css

css への相対パスは/css/site.css.

簡単に言えば。正しいディレクトリから inject を呼び出します。

gulp.task('inject', function() {
    return gulp

        .src('./src/index.html')
        .pipe($.inject(gulp.src('build/css/site.css', {read: false}), {relative: true}))
        .pipe(gulp.dest('./_build/'));
});

をなくす./

編集

cwd (現在の作業ディレクトリ) を変更して再生する必要がある場合があります。

于 2016-06-01T14:55:03.303 に答える