2024-06-09 22:14:10 +09:00

119 lines
3.5 KiB
JavaScript

"use strict";
var gulp = require("gulp"),
minifycss = require("gulp-clean-css"),
uglify = require("gulp-uglify"),
concat = require("gulp-concat"),
header = require("gulp-header"),
buffer = require("vinyl-buffer"),
pkg = require("./package.json"),
eslint = require("gulp-eslint"),
prettify = require("gulp-jsbeautifier"),
browserify = require("browserify"),
source = require("vinyl-source-stream"),
rename = require("gulp-rename"),
browserSync = require('browser-sync').create();
var banner = ["/**",
" * <%= pkg.name %> v<%= pkg.version %>",
" * Copyright <%= pkg.company %>",
" * @link <%= pkg.homepage %>",
" * @license <%= pkg.license %>",
" */",
""].join("\n");
function prettifyJs() {
return gulp.src("./src/js/simplemde.js")
.pipe(prettify({ js: { brace_style: "collapse", indent_char: "\t", indent_size: 1, max_preserve_newlines: 3, space_before_conditional: false } }))
.pipe(gulp.dest("./src/js"));
}
function prettifyCss() {
return gulp.src("./src/css/simplemde.css")
.pipe(prettify({ css: { indentChar: "\t", indentSize: 1 } }))
.pipe(gulp.dest("./src/css"));
}
function lint() {
return gulp.src("./src/js/**/*.js")
// .pipe(eslint({ fix: true })) // 자동 수정 옵션 추가
.pipe(eslint.format())
.pipe(eslint.failAfterError());
}
function taskBrowserify(opts) {
return browserify("./src/js/simplemde.js", opts)
.bundle();
}
function browserifyDebug() {
return taskBrowserify({ debug: true, standalone: "SimpleMDE" })
.pipe(source("simplemde.debug.js"))
.pipe(buffer())
.pipe(header(banner, { pkg: pkg }))
.pipe(gulp.dest("./debug/"));
}
function browserifyTask() {
return taskBrowserify({ standalone: "SimpleMDE" })
.pipe(source("simplemde.js"))
.pipe(buffer())
.pipe(header(banner, { pkg: pkg }))
.pipe(gulp.dest("./debug/"));
}
function scripts() {
var js_files = ["./debug/simplemde.js"];
return gulp.src(js_files)
.pipe(concat("simplemde.min.js"))
.pipe(uglify())
.pipe(buffer())
.pipe(header(banner, { pkg: pkg }))
.pipe(gulp.dest("./dist/"));
}
function styles() {
var css_files = [
"./node_modules/codemirror/lib/codemirror.css",
"./src/css/*.css",
"./node_modules/codemirror-spell-checker/src/css/spell-checker.css"
];
return gulp.src(css_files)
.pipe(concat("simplemde.css"))
.pipe(buffer())
.pipe(header(banner, { pkg: pkg }))
.pipe(gulp.dest("./debug/"))
.pipe(minifycss())
.pipe(rename("simplemde.min.css"))
.pipe(buffer())
.pipe(header(banner, { pkg: pkg }))
.pipe(gulp.dest("./dist/"));
}
function serve() {
browserSync.init({
server: {
baseDir: "./dist"
},
port: 3000
});
//gulp.watch("src/**/*.js", gulp.series(browserifyDebug, scripts));
//gulp.watch("src/**/*.js", gulp.series(prettifyJs, lint, browserifyDebug, browserifyTask, scripts)).on;
//gulp.watch("src/**/*.js", gulp.series(prettifyJs, lint, browserifyDebug, browserifyTask, scripts)).on('change', browserSync.reload);
gulp.watch("src/js/simplemde.js", gulp.series(lint, browserifyDebug, browserifyTask, scripts))
gulp.watch("src/**/*.css", gulp.series(prettifyCss, styles));
gulp.watch(["dist/**/*"]).on('change', browserSync.reload);
}
gulp.task("prettify-js", prettifyJs);
gulp.task("prettify-css", prettifyCss);
gulp.task("lint", gulp.series(prettifyJs, lint));
gulp.task("browserify:debug", gulp.series("lint", browserifyDebug));
gulp.task("browserify", gulp.series("lint", browserifyTask));
gulp.task("scripts", gulp.series("browserify:debug", "browserify", scripts));
gulp.task("styles", gulp.series("prettify-css", styles));
gulp.task("serve", serve);
gulp.task("default", gulp.series("scripts", "styles"));