V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
uniquecolesmith
V2EX  ›  问与答

gulp 如何只编译改动和新加的文件

  •  
  •   uniquecolesmith · 2016-04-04 23:29:20 +08:00 · 3565 次点击
    这是一个创建于 3159 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 问题:

      • 每次改动或者新加入 sass 文件的时候都会把 scss 全部编译一遍,如何解决?
    • gulpfile 代码

    11 条回复    2016-04-06 10:54:21 +08:00
    ruanyu1
        1
    ruanyu1  
       2016-04-04 23:35:43 +08:00   ❤️ 1
    gulp-changed
    NemoAlex
        2
    NemoAlex  
       2016-04-04 23:39:09 +08:00   ❤️ 1
    使用第三方的 watch ,例如: https://github.com/floatdrop/gulp-watch
    而不是 gulp.watch
    uniquecolesmith
        3
    uniquecolesmith  
    OP
       2016-04-04 23:45:07 +08:00
    @ruanyu1
    @NemoAlex
    我试了 但是感觉没用? 是不是我打开方式不对?  gulp-changed 和 gulp-cached 也没起作用
    对了 gulp-sass 老是 bus error ,改用 gulp-ruby-sass
    uniquecolesmith
        4
    uniquecolesmith  
    OP
       2016-04-04 23:56:45 +08:00
    @ruanyu1 gulp-changed TypeError: Cannot read property 'mtime' of null 没找到解决办法
    adspe
        5
    adspe  
       2016-04-05 06:38:53 +08:00   ❤️ 1
    gulp-filter
    .pipe(filter('**/*.scss'))
    v1024
        6
    v1024  
       2016-04-05 07:54:05 +08:00 via iPhone   ❤️ 1
    watch([*.sass"]).on("change", function(file){ 在这里编译 file })

    大概是这样的,上面代码仅供参考
    vietor
        7
    vietor  
       2016-04-05 07:56:29 +08:00 via Android   ❤️ 1
    升级机器性能,没必要纠结这些小不爽
    readonly
        8
    readonly  
       2016-04-05 08:39:06 +08:00 via iPhone   ❤️ 1
    gulp.src 每次都会去读取文件流,当文件数量多的时候可以明显感受到

    gulp-watch 不支持分析依赖进行递归编译,后代依赖发生变化并不会 watch 到,所以会 miss 掉真正想要处理的文件

    小项目还是直接全量处理吧,大一点的项目没有基于依赖收集的构建工具基本死路一条,这方面目前做得比较好的有: webpack , F.I.S
    uniquecolesmith
        9
    uniquecolesmith  
    OP
       2016-04-05 11:13:25 +08:00
    @v1024 试试 谢谢
    @vietor 机器性能。。。编译文件多了你试试
    @readonly 3Q 但是 webpack 把依赖编译进来也挺大的 我觉得 webpack+react/vue 好点, 其他普通的项目也用 webpack ? 我不太理解这么做的哲学
    uniquecolesmith
        10
    uniquecolesmith  
    OP
       2016-04-05 11:15:26 +08:00
    @adspe 我看了这个插件没懂 是编译完, 再过滤没有改动的文件, 再还原?
    uniquecolesmith
        11
    uniquecolesmith  
    OP
       2016-04-06 10:54:21 +08:00
    @v1024 你的方法可行 但是 这和 gulp.task 的哲学是不是有悖? sass task 变成了 sass function
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5955 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.