2017-07-19 26 views
0

更新很抱歉,這是很難解釋,但我希望能夠更改任何較少的文件(包括導入的),並通過手錶更新網站。獲取導入.less文件更新與au運行 - 在Aurelia

我有一個根級(來自src)site.less文件。

我也有各種較少的文件分散在src文件夾中,並從site.less文件中導入它們。

當我運行au run --watch這個inital構建成功地爲我的應用程序更新css。 當我然後更新少文件它觸發刷新,但網站不更新與更改。

爲了解決這個問題,我改變了aurelia_project/tasks/watch中的監視文件。 - 我已經做到這樣,當一個較少的文件被更改時,它只會將我的根較少文件添加到pendingRefreshPaths。

現在,當我更改並保存導入的較少文件時,它會觸發觀看刷新,並在相應的文件(包括根目錄)中添加,但仍不會更新該網站。

如果我然後打開無根文件並保存而不做任何更改,它是這樣做的,不會顯示更改。

奇怪的事情和線索,我認爲我需要看看是如果我更改根少文件的內容,然後保存,它都按預期工作。

因此,我認爲我需要在流水線上的某個地方欺騙,以使其認爲真正改變了無根文件,以便其他較少文件的手錶實際上是成功的。

任何想法,儘管它處於pendingRefreshPaths,它忽略不變的文件?

+1

我想這可能是相關型號這個問題,也許這是一個錯誤:https://github.com/aurelia/cli/issues/675 – 4imble

回答

0

發現罪魁禍首,它是changedInPlace函數被過濾出來的。

因此,如果我刪除這個,現在當我更改任何無文件時,它將查詢根.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(); 
     } 
    }); 
};