keyboard-trainer
/
gulpfile.js
91 строка · 2.6 Кб
1const gulp = require("gulp");2const webpack = require("webpack-stream");3const sourcemaps = require("gulp-sourcemaps");4const rename = require('gulp-rename');5const nodemon = require("gulp-nodemon");6const env = require("gulp-env");7const sass = require('gulp-sass')(require('sass'));8
9const dist = "./dist/";10const src = "./src/";11
12gulp.task("copy-handlebar-views", () => {13return gulp.src(src + "/views/**/*.hbs")14.pipe(gulp.dest(dist + "/views"))15});16
17gulp.task("copy-fonts", () => {18return gulp.src(src + "/fonts/**/*.*")19.pipe(gulp.dest(dist + "/public/fonts"))20});21
22gulp.task("copy-assets", () => {23return gulp.src(src + "/assets/**/*.*")24.pipe(gulp.dest(dist + "/public/assets"))25})26
27gulp.task("copy-server", () => {28return gulp.src(src + "/server/**/*.js")29.pipe(gulp.dest(dist));30})31gulp.task("copy-env-file", () => {32return gulp.src(src + "/server/.env.json")33.pipe(gulp.dest(dist));34})35
36gulp.task("serve", () => {37env({38file: dist + "/.env.json"39})40nodemon({41script: dist + "/index.js",42ext: 'js hbs css'43})44})45
46gulp.task("build-ts", () => {47return gulp.src(src + "/scripts/main.ts")48.pipe(webpack({49mode: 'production',50watch: false,51devtool: "source-map",52module: {53rules: [{54test: /\.tsx?$/,55exclude: /(node_modules|bower_components)/,56use: {57loader: 'ts-loader',58}59}]60},61resolve: {62extensions: ['.tsx', '.ts', '.js'],63},64output: {65filename: 'bundle.js'66},67}))68.pipe(gulp.dest(dist + "/public/scripts"))69});70
71gulp.task("build-styles", () => {72return gulp.src(src + "/styles/main.@(scss|sass)")73.pipe(sourcemaps.init())74.pipe(sass().on("error", sass.logError))75.pipe(sourcemaps.write())76.pipe(rename("style.css"))77.pipe(gulp.dest(dist + "/public/styles"))78})79
80gulp.task("watch", () => {81gulp.watch(src + "server/**/*.js", gulp.series("copy-server"));82gulp.watch(src + "views/**/*.hbs", gulp.parallel("copy-handlebar-views"));83gulp.watch(src + "scripts/**/*.ts", gulp.parallel("build-ts"));84gulp.watch(src + "styles/**/*.@(scss|sass)", gulp.parallel("build-styles"));85gulp.watch(src + "assets/**/*.*", gulp.parallel("copy-assets"));86gulp.watch(src + "fonts/**/*.*", gulp.parallel("copy-fonts"));87})88
89gulp.task("build", gulp.parallel(gulp.series("copy-env-file", "copy-server", "serve"), "build-ts", "copy-handlebar-views", "build-styles", "copy-assets"/*"copy-fonts"*/));90
91gulp.task("default", gulp.parallel("watch", "build"));