javascript ejs gulp文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript ejs gulp文件相关的知识,希望对你有一定的参考价值。

var gulp = require('gulp');
var fs = require('fs');
var sass = require('gulp-sass');
var sassLint = require('gulp-sass-lint');
var jshint = require('gulp-jshint');
var notify = require('gulp-notify');
var plumber = require("gulp-plumber");
var ejs = require("gulp-ejs");
var browserSync = require('browser-sync');

// エラー通知
var onError = function (err) {
    notify({
         title: 'Gulp Task Error',
         message: 'Check the console.'
     }).write(err);

     console.log(err.toString());

     this.emit('end');
}

// sass lint
gulp.task('sass-lint', function() {
    return gulp.src('src/sass/**/*.s+(a|c)ss')
    .pipe(sassLint({
        options: {
            'merge-default-rules': false,
        },
        rules: {
            // インデントチェック
            'indentation': [
                1,
                {
                    'size': 4
                }
            ],
            // 省略可能な色指定の検知
            'hex-length': [
                1,
                {
                    'style': 'short'
                }
            ],
            // 無効なプロパティ検知
            'no-misspelled-properties': 1
        }
    }))
    .pipe(sassLint.format())
    .pipe(sassLint.failOnError())
});

// sass
gulp.task('sass', function() {
    return gulp.src(['src/sass/**/*.scss'])
    .pipe(plumber({errorHandler: onError}))
    .pipe(sass.sync({outputStyle: 'compressed'}).on('error', sass.logError))
    .pipe(gulp.dest('dest/css'))
    .on('end', function() {
        gulp.start('sass-lint');
        browserSync.reload();
    });
});

// ejs
gulp.task('ejs', function() {
    var data = JSON.parse(fs.readFileSync('src/ejs/data.json'));

    return gulp.src(['src/ejs/**/*.ejs', '!src/ejs/**/_*.ejs'])
    .pipe(plumber({errorHandler: onError}))
    .pipe(ejs({data: data}, {
        root: './src/ejs/'
    }, {ext:'.html'}))
    .pipe(gulp.dest('dest/html/'))
    .on('end', function() {
        browserSync.reload();
    });
});

// jshint
gulp.task('js', function() {
    return gulp.src('src/js/**/*.js')
    .pipe(jshint())
    .pipe(jshint.reporter('default'))
    .pipe(gulp.dest('dest/js/'))
    .on('end', function() {
        browserSync.reload();
    });

})

// Static server
gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: 'dest/',
            index: 'html/index.html',
            serveStaticOptions: {
                extensions: ["html"]
            }
        },
        port: 3030,
        notify: true
        // ghostMode: {
        //     scroll: true
        // }
    });
});

// Reload all browsers
gulp.task('bs-reload', function () {
    browserSync.reload();
});

// watch
gulp.task('watch', ['sass', 'ejs', 'browser-sync'], function() {
    gulp.watch('./src/sass/**',  { ignoreInitial: false }, function() {
        gulp.start('sass');
    });

    gulp.watch('src/ejs/**', { ignoreInitial: false }, function() {
        gulp.start('ejs');
    });

    gulp.watch('src/js/**', { ignoreInitial: false }, function() {
        gulp.start('js');
    });
});

gulp.task('default', function() {
    gulp.start('watch');
});

以上是关于javascript ejs gulp文件的主要内容,如果未能解决你的问题,请参考以下文章

无法从 HTML/EJS 文件运行外部 javascript

通过 ejs 文件中的 javascript 访问 JSON

ejs使用文档

在javascript中,我已将对象传递给ejs文件,但它仍然说对象为空

JavaScript使用Nodejs模板引擎EJS

gulp-uglify 压缩javascript文件