2017-07-19 4 views
0

申し訳ありませんが、これは説明するのは難しいですが、私はそれより少ないファイル(インポートされたものを含む)を変更し、 。Aureliaでアップデートするためにインポートされた.lessファイルを取得する

私はルートレベル(srcから)site.lessファイルを持っています。

また、srcフォルダの周りに散在するさまざまなファイルが少なく、site.lessファイルからそれらをインポートしています。

私がau run --watchを実行すると、この基本ビルドは自分のアプリケーションのCSSを更新しています。 その後、少ないファイルを更新すると、リフレッシュがトリガーされますが、サイトは変更で更新されません。

これを解決するために、aurelia_project/tasks/watchでウォッチファイルを変更しました。 - ファイルが少なくなったときに、rootより少ないファイルをpendingRefreshPathsに追加するようにしました。

インポートされたlessファイルを変更して保存すると、適切なファイル(ルートを含む)にウォッチ更新が追加されますが、サイトは更新されません。

次に、ルートレスファイルを開いて変更を保存せずに同じことを行っても、変更は表示されません。

私が見なければならないと思う場所への奇妙なことと手掛かりは、私がルートレスファイルの内容を変更して保存した場合、すべてが期待通りに動作するかどうかです。

このように私は、ルートの少ないファイルに実際の変更があると思うように、パイプラインのどこかをトリックする必要があると思うので、他の少ないファイルからのウォッチが実際に成功します。

pendingRefreshPathsにあっても変更されていないファイルを無視するアイデアはありますか?

+1

私は多分それはバグです、これはこの問題にreleatedすることができたとしますhttps://github.com/aurelia/cli/issues/675 – 4imble

答えて

0

原因を見つけたのは、それをフィルタリングしていたchangedInPlace関数です。

これを削除すると、今度は.lessファイルを変更すると、代わりにルート.lessファイルが取り消され、明らかに他のファイルが正常にインポートされ、コンパイルされます。

export default function processCSS() { 
    return gulp.src(project.cssProcessor.source) <--- remove this 
    //.pipe(changedInPlace({firstPass:true})) 
    .pipe(plumber({ errorHandler: notify.onError('Error: <%= error.message %>') })) 
    .pipe(sourcemaps.init()) 
    .pipe(less()) 
    .pipe(build.bundle()); 
} 

watch.ts

let watch = (callback?) => { 
    watchCallback = callback || watchCallback; 
    return gulpWatch(
    Object.keys(watches), 
    { 
     read: false, // performance optimization: do not read actual file contents 
     verbose: true 
    }, 
    (vinyl) => { 
     if (vinyl.path && vinyl.cwd && vinyl.path.startsWith(vinyl.cwd)) { 
     let pathToAdd = vinyl.path.substr(vinyl.cwd.length + 1); 

     if (pathToAdd.endsWith(".less")) { 
      log(`Watcher: Adding path src\\site.less to pending build changes...`); 
      // Crude but could be moved to config to define a root 
      pendingRefreshPaths.push("src\\site.less"); 
     } 
     else { 
      log(`Watcher: Adding path ${pathToAdd} to pending build changes...`); 
      pendingRefreshPaths.push(pathToAdd); 
     } 
     refresh(); 
     } 
    }); 
}; 
関連する問題