【问题标题】:My gulp.js file is not updating my css on the browser我的 gulp.js 文件没有在浏览器上更新我的 css
【发布时间】:2015-11-02 18:48:42
【问题描述】:

我正在使用 gulp.js 文件将我的 less 代码转换为 css,然后使用 BrowserSync 在保存时自动更新网站,但是,当我保存文件时,没有进行任何更改。我的 gulp.js 文件的代码如下:

var gulp = require('gulp'),
                    less = require('gulp-less'),
                    uglifycss = require("gulp-uglifycss"),
                    path = require('path'),
                    watch = require('gulp-watch'),
                    autoprefixer = require('gulp-autoprefixer'),
                    browserSync = require('browser-sync'),
                    uglify = require('gulp-uglify'),
                    sourcemaps = require('gulp-sourcemaps'),
                    jshint = require('gulp-jshint'),
                    imageResize = require('gulp-image-resize'),
                    rename = require("gulp-rename"),
                    changed = require("gulp-changed"),
                    plumber = require("gulp-plumber"),
                    cmq = require('gulp-combine-media-queries');


            var run = require('gulp-run');

            //gulp.src(['js/**/*.js', '!js/**/*.min.js'])

            gulp.task('default', function () {


                 var devProxy = "mywebsite.dev.chand.co";
            // } 

            browserSync({
                    proxy: devProxy,
                    files: "library/css/*.css"
                });

            //gulp.watch('./library/less/**/*.less', ['compile-css']);

            gulp.watch('./library/less/**/*.less', ['compile-css']);

            gulp.watch(['./library/js/*.js', '!./library/js/main-built.js'], ['javascript']);

            });



            gulp.task('javascript', function() {
             gulp.src(['./library/js/*.js','./library/js/components/*.js', '!./library/js/main-built.js',  '!./library/js/cf7.js'])     // ignore vendor stuff
             .pipe(plumber())    
             .pipe(jshint())
             .pipe(jshint.reporter('default'));

            //    gulp.src(['./library/js/**/*.js', '!./library/js/require.js'])    
               //.pipe(uglify())
            //     .pipe(gulp.dest('library/dist/js'));


            run('r.js -o build.js').exec();
            });


            gulp.task('compile-css', function () {
            gulp.src('./library/less/main.less')
                        .pipe(plumber())    
                        .pipe(sourcemaps.init())
                        .pipe(less())
                        .pipe(autoprefixer())
                        //.pipe(uglifycss())
                        .pipe(sourcemaps.write('./maps'))
                        .pipe(gulp.dest('./library/css/'));



            gulp.src('./library/less/admin.less')
                        .pipe(plumber())    
                        .pipe(sourcemaps.init())
                        .pipe(less())
                        .pipe(autoprefixer())
                        //.pipe(uglifycss())
                        .pipe(sourcemaps.write('./maps'))
                        .pipe(gulp.dest('./library/css/'));

            gulp.src('./library/less/editor-style.less')
                        .pipe(plumber())    
                        .pipe(sourcemaps.init())
                        .pipe(less())
                        .pipe(autoprefixer())
                        //.pipe(uglifycss())
                        .pipe(sourcemaps.write('./maps'))
                        .pipe(gulp.dest('./library/css/'));


            gulp.src('./library/less/style-bootstrap.less')
                        .pipe(plumber())    
                        //.pipe(sourcemaps.init())
                        .pipe(less())
                        .pipe(autoprefixer())
                        //.pipe(uglifycss())

                        .pipe(gulp.dest('./library/css/'));

            return; 

            });

            gulp.task('dist-css', function () {
            gulp.src('./library/less/main.less')
                        .pipe(less())
                        .pipe(autoprefixer())
                        .pipe(cmq({
                          log: true
                        }))
                        .pipe(uglifycss())
                        .pipe(gulp.dest('./library/css/'));




            gulp.src('./library/less/admin.less')
                        //.pipe(sourcemaps.init())
                        .pipe(less())
                        .pipe(autoprefixer())
                        .pipe(uglifycss())
                        //.pipe(sourcemaps.write('./maps'))
                        .pipe(gulp.dest('./library/css/'));

            gulp.src('./library/less/editor-style.less')
                        //.pipe(sourcemaps.init())
                        .pipe(less())
                        .pipe(autoprefixer())
                        .pipe(uglifycss())
                        //.pipe(sourcemaps.write('./maps'))
                        .pipe(gulp.dest('./library/css/'));



            });




            gulp.task('resize-images', function () {

            // this doesn't happen automatically, because it's a bit intensive, it should be done when we need.

            var originalName;

             gulp.src("images/src/**/*.{jpg,png}")
            .pipe(changed("images/dist"))


            // This isn't ideal, but it'll work fine
            // Make sure that you go BIGGEST FIRST because of piping

            // Need to change renaming to the wordpress convention

            // need to specify heights?

            // need to do lossless optimisation

            // remember to set new name as well as new size for each resize.
            .pipe(imageResize({ 
                imageMagick : true,
                width : 200
            }))
            .pipe(rename(function (path) {
                originalName = path.basename;
                path.basename = originalName + "-200";        
            }))
            .pipe(gulp.dest("images/dist"))


            .pipe(imageResize({ 
                imageMagick : true,
                width : 100
            }))
            .pipe(rename(function (path) {
                path.basename = originalName + "-100";        
            }))
            .pipe(gulp.dest("images/dist"));

            });

【问题讨论】:

  • 首先,您可以使代码变得更简单。 Gulp.src 可以 glob(参见:github.com/isaacs/node-glob#glob-primerreturn gulp.src('./library/less/{main, admin,editor-style, style-bootstrap}.less') .pipe(plumber()) .pipe(sourcemaps.init()) .pipe(less()) .pipe(autoprefixer()) //.pipe(uglifycss()) .pipe(sourcemaps.write('./maps')) .pipe(gulp.dest('./library/css/')); 你的意思是文件没有更新,还是它们从未写入预期的位置?
  • @Rik - 谢谢,我会清理它。当我更新 less 文件时,我可以看到它在 CSS 中发生了变化,但它不会更新我的页面 CSS,尽管它会在我做出更改后立即重新加载页面。
  • 因此,如果我理解正确,您的 less 任务正在运行,并且您的 css 已移动到正确的位置,但在刷新时它不会加载到浏览器中。这听起来像是浏览器中的缓存问题。如果手动重新加载 (Ctrl+F5) 会发生什么?那么它是否刷新css,因为它肯定是一个缓存问题。
  • 我为你添加了一个可能的解决方案

标签: javascript css less gulp-watch browser-sync


【解决方案1】:

您似乎遇到了缓存问题,我阅读了有关 css + browsersync 的更多信息。 this post 可能会对您有所帮助。 This 可能是你的解决方案。

将手表移至单独的任务

gulp.task('watch', ['browser-sync'], function(){
    gulp.watch('./library/less/**/*.less', ['compile-css']);
    gulp.watch('./library/css/**/*.css').on('change', browserSync.reload);
});

让它依赖于browser-sync

gulp.task('browser-sync', function() {
    var devProxy = "mywebsite.dev.chand.co";
    browserSync({
        proxy: devProxy,
        files: "library/css/*.css"
    });
});

然后将default改为

gulp.task('default', 'watch');

阅读更多关于重新加载 + browserSync here

【讨论】:

  • 非常感谢。我明天上班时会尝试这个解决方案。只是想可能是源地图没有更新吗?
  • 我对此表示怀疑。源映射仅用于调试目的。在您的 sn-p 中,它们也被评论了,但不知道您是否评论了它以查看是否有帮助。
  • 我已经尝试过这个解决方案,但它似乎仍然无法更新页面上的 css
  • 您是否尝试过使用 Ctrl+F5 手动重新加载页面,然后您看到更改了吗?
  • 这正在工作。由于某种原因,它开始更新。感谢 Rik 的所有帮助和努力!
【解决方案2】:

尝试手动删除压缩的 CSS 和 JavaScript 文件也是值得的。

例如rm -f web/css/compressed/style.css

...然后再次尝试gulp build

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2020-12-02
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2019-09-21
    相关资源
    最近更新 更多