mollenhauer
61 строка · 1.3 Кб
1"use strict"
2
3const
4esbuild = require('esbuild'),5chalk = require('chalk').default6
7const DEFAULT_OPTIONS = {8bundle: false,9logLevel: 'silent',10}
11
12module.exports = function (grunt) {13grunt.task.registerMultiTask('esbuild', 'Convert and optimize scripts using Esbuild.',14async function () {15let done = this.async()16
17if (this.files[0].src.length == 0) {18return done()19}20
21let inputOptions = this.options()22let isWatchMode = inputOptions.watchMode ?? false23delete inputOptions.watchMode24
25let esbuildOptions = Object.assign(26{27entryPoints: this.files[0].src,28write: true,29},30DEFAULT_OPTIONS,31inputOptions,32)33
34try {35if (!isWatchMode) {36await esbuild.build(esbuildOptions)37}38else {39let buildProcess = await esbuild.context(esbuildOptions)40
41await buildProcess.watch()42console.log(chalk.bgGreen('\nWatch mode is active!'))43}44
45console.log(46chalk.green('The task ')47+ this.nameArgs48+ chalk.green(' was complied.')49)50
51return done(true)52}53catch (error) {54console.log(chalk.red.bold(error.message))55console.log(error.stack)56
57done(false)58}59}60)61}