1 | const { isObject } = require('@mara/devkit')
|
2 |
|
3 | function getLibName(name) {
|
4 | const str = name.replace(/^@\w+\//i, '').replace(/_|-/g, '.')
|
5 | const camelCaseByDot = name => {
|
6 | const upperFirstChar = str =>
|
7 | str.replace(/^[a-z]{1}/, match => match.toUpperCase())
|
8 | return name.split('.').reduce((camel, cur) => camel + upperFirstChar(cur))
|
9 | }
|
10 |
|
11 | return camelCaseByDot(str)
|
12 | }
|
13 |
|
14 | function toCamelCase(name) {
|
15 | const upperFirstChar = str =>
|
16 | str.replace(/^[a-z]{1}/, match => match.toUpperCase())
|
17 | const dotName = name.replace(/_|-/g, '.')
|
18 |
|
19 | return dotName.split('.').reduce((camel, cur) => camel + upperFirstChar(cur))
|
20 | }
|
21 |
|
22 | function getUmdName(name) {
|
23 | if (isObject(name)) {
|
24 | const { amd, commonjs, root } = name
|
25 |
|
26 | return { amd, commonjs, root }
|
27 | }
|
28 |
|
29 | return {
|
30 | amd: name,
|
31 | commonjs: name,
|
32 | root: toCamelCase(name)
|
33 | }
|
34 | }
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | function getLibraryExportName(format, pkgName) {
|
40 | if (!pkgName) return
|
41 |
|
42 | if (isObject(pkgName)) {
|
43 | if (format === 'umd') return getUmdName(pkgName)
|
44 |
|
45 | return getLibraryExportName(format, pkgName[format])
|
46 | }
|
47 |
|
48 | const pureName = pkgName.replace(/^@\w+\//i, '')
|
49 |
|
50 | switch (format) {
|
51 | case 'var':
|
52 | case 'root':
|
53 | return toCamelCase(pureName)
|
54 | case 'umd':
|
55 | return getUmdName(pureName)
|
56 | case 'amd':
|
57 | case 'commonjs':
|
58 | default:
|
59 | return pureName
|
60 | }
|
61 | }
|
62 |
|
63 | module.exports = { getLibraryExportName, getLibName }
|