2017-07-19 31 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(); 
     } 
    }); 
};