mollenhauer

Форк
0
61 строка · 1.3 Кб
1
"use strict"
2

3
const
4
  esbuild = require('esbuild'),
5
  chalk = require('chalk').default
6

7
const DEFAULT_OPTIONS = {
8
  bundle: false,
9
  logLevel: 'silent',
10
}
11

12
module.exports = function (grunt) {
13
  grunt.task.registerMultiTask('esbuild', 'Convert and optimize scripts using Esbuild.',
14
    async function () {
15
      let done = this.async()
16

17
      if (this.files[0].src.length == 0) {
18
        return done()
19
      }
20

21
      let inputOptions = this.options()
22
      let isWatchMode = inputOptions.watchMode ?? false
23
      delete inputOptions.watchMode
24

25
      let esbuildOptions = Object.assign(
26
        {
27
          entryPoints: this.files[0].src,
28
          write: true,
29
        },
30
        DEFAULT_OPTIONS,
31
        inputOptions,
32
      )
33

34
      try {
35
        if (!isWatchMode) {
36
          await esbuild.build(esbuildOptions)
37
        }
38
        else {
39
          let buildProcess = await esbuild.context(esbuildOptions)
40

41
          await buildProcess.watch()
42
          console.log(chalk.bgGreen('\nWatch mode is active!'))
43
        }
44

45
        console.log(
46
          chalk.green('The task ')
47
          + this.nameArgs
48
          + chalk.green(' was complied.')
49
        )
50

51
        return done(true)
52
      }
53
      catch (error) {
54
        console.log(chalk.red.bold(error.message))
55
        console.log(error.stack)
56

57
        done(false)
58
      }
59
    }
60
  )
61
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.