UNPKG

1.48 kBJavaScriptView Raw
1const { isObject } = require('@mara/devkit')
2
3function 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
14function 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
22function 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// 区分 amd, commonjs, root, umd 配置
38// 对象配置支持省略
39function 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
63module.exports = { getLibraryExportName, getLibName }