talos

Форк
0
92 строки · 2.5 Кб
1
#!/usr/bin/env node
2

3
/*!
4
 * Script to build our plugins to use them separately.
5
 * Copyright 2020-2021 The Bootstrap Authors
6
 * Copyright 2020-2021 Twitter, Inc.
7
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
8
 */
9

10
'use strict'
11

12
const path = require('path')
13
const rollup = require('rollup')
14
const { babel } = require('@rollup/plugin-babel')
15
const banner = require('./banner.js')
16

17
const TEST = process.env.NODE_ENV === 'test'
18
const plugins = [
19
  babel({
20
    // Only transpile our source code
21
    exclude: 'node_modules/**',
22
    // Include the helpers in each file, at most one copy of each
23
    babelHelpers: 'bundled'
24
  })
25
]
26
const bsPlugins = {
27
  Alert: path.resolve(__dirname, '../js/src/alert.js'),
28
  Button: path.resolve(__dirname, '../js/src/button.js'),
29
  Carousel: path.resolve(__dirname, '../js/src/carousel.js'),
30
  Collapse: path.resolve(__dirname, '../js/src/collapse.js'),
31
  Dropdown: path.resolve(__dirname, '../js/src/dropdown.js'),
32
  Modal: path.resolve(__dirname, '../js/src/modal.js'),
33
  Popover: path.resolve(__dirname, '../js/src/popover.js'),
34
  ScrollSpy: path.resolve(__dirname, '../js/src/scrollspy.js'),
35
  Tab: path.resolve(__dirname, '../js/src/tab.js'),
36
  Toast: path.resolve(__dirname, '../js/src/toast.js'),
37
  Tooltip: path.resolve(__dirname, '../js/src/tooltip.js'),
38
  Util: path.resolve(__dirname, '../js/src/util.js')
39
}
40
const rootPath = TEST ? '../js/coverage/dist/' : '../js/dist/'
41

42
const build = async plugin => {
43
  console.log(`Building ${plugin} plugin...`)
44

45
  const external = ['jquery', 'popper.js']
46
  const globals = {
47
    jquery: 'jQuery', // Ensure we use jQuery which is always available even in noConflict mode
48
    'popper.js': 'Popper'
49
  }
50

51
  // Do not bundle Util in plugins
52
  if (plugin !== 'Util') {
53
    external.push(bsPlugins.Util)
54
    globals[bsPlugins.Util] = 'Util'
55
  }
56

57
  // Do not bundle Tooltip in Popover
58
  if (plugin === 'Popover') {
59
    external.push(bsPlugins.Tooltip)
60
    globals[bsPlugins.Tooltip] = 'Tooltip'
61
  }
62

63
  const pluginFilename = `${plugin.toLowerCase()}.js`
64
  const bundle = await rollup.rollup({
65
    input: bsPlugins[plugin],
66
    plugins,
67
    external
68
  })
69

70
  await bundle.write({
71
    banner: banner(pluginFilename),
72
    format: 'umd',
73
    name: plugin,
74
    sourcemap: true,
75
    globals,
76
    file: path.resolve(__dirname, `${rootPath}${pluginFilename}`)
77
  })
78

79
  console.log(`Building ${plugin} plugin... Done!`)
80
}
81

82
const main = async () => {
83
  try {
84
    await Promise.all(Object.keys(bsPlugins).map(plugin => build(plugin)))
85
  } catch (error) {
86
    console.error(error)
87

88
    process.exit(1)
89
  }
90
}
91

92
main()
93

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

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

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

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