@sanity/pkg-utils 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{_build-e608bb7c.cjs → _build-f08e1020.cjs} +97 -11
- package/dist/_build-f08e1020.cjs.map +1 -0
- package/dist/cli.cjs +2 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -9
- package/dist/index.js +95 -10
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/build/_parseBrowserslistVersions.ts +60 -0
- package/src/build/_parseNodeTarget.ts +15 -0
- package/src/build/_parseTasks.ts +3 -3
- package/src/build/_parseWebTarget.ts +35 -0
- package/src/build/_types.ts +1 -0
- package/src/build/build.ts +20 -9
- package/src/core/_defaults.ts +6 -4
- package/src/core/config/_resolveConfigProperty.ts +3 -1
- package/src/core/config/types.ts +0 -4
- package/src/core/pkg/_types.ts +1 -0
- package/dist/_build-e608bb7c.cjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/pkg-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"author": "Sanity.io <hello@sanity.io>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Simple utilities for modern npm packages.",
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
"@rollup/plugin-json": "^4.1.0",
|
|
49
49
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
50
50
|
"@sanity/tsdoc-to-portable-text": "^0.4.1",
|
|
51
|
+
"browserslist": "^4.21.3",
|
|
51
52
|
"cac": "^6.7.12",
|
|
52
53
|
"chalk": "^4.1.2",
|
|
53
54
|
"esbuild": "^0.15.5",
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import browserslist from 'browserslist'
|
|
2
|
+
|
|
3
|
+
export interface _PackageTargetVersions {
|
|
4
|
+
chrome: string[]
|
|
5
|
+
ff: string[]
|
|
6
|
+
edge: string[]
|
|
7
|
+
iosSaf: string[]
|
|
8
|
+
saf: string[]
|
|
9
|
+
opera: string[]
|
|
10
|
+
node: string[]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function _sortAsNumber(a: string, b: string) {
|
|
14
|
+
const aVersion = Number(a)
|
|
15
|
+
const bVersion = Number(b)
|
|
16
|
+
|
|
17
|
+
return aVersion - bVersion
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function _parseBrowserslistVersions(query: string[]): _PackageTargetVersions {
|
|
21
|
+
const result = browserslist(query)
|
|
22
|
+
|
|
23
|
+
const entries = result.map((key) => {
|
|
24
|
+
const [name, version] = key.split(' ')
|
|
25
|
+
|
|
26
|
+
return {name, version: version.split('-')[0].split('.')[0]}
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
const andChr = entries.filter((b) => b.name === 'and_chr')
|
|
30
|
+
const andFf = entries.filter((b) => b.name === 'and_ff')
|
|
31
|
+
const chrome = entries.filter((b) => b.name === 'chrome')
|
|
32
|
+
const edge = entries.filter((b) => b.name === 'edge')
|
|
33
|
+
const ff = entries.filter((b) => b.name === 'firefox')
|
|
34
|
+
const iosSaf = entries.filter((b) => b.name === 'ios_saf')
|
|
35
|
+
const saf = entries.filter((b) => b.name === 'safari')
|
|
36
|
+
const opera = entries.filter((b) => b.name === 'opera')
|
|
37
|
+
const node = entries.filter((b) => b.name === 'node')
|
|
38
|
+
|
|
39
|
+
// versions
|
|
40
|
+
const versions: _PackageTargetVersions = {
|
|
41
|
+
chrome: andChr.concat(chrome).map((b) => b.version),
|
|
42
|
+
ff: andFf.concat(ff).map((b) => b.version),
|
|
43
|
+
edge: edge.map((b) => b.version),
|
|
44
|
+
iosSaf: iosSaf.map((b) => b.version),
|
|
45
|
+
saf: saf.map((b) => b.version),
|
|
46
|
+
opera: opera.map((b) => b.version),
|
|
47
|
+
node: node.map((b) => b.version),
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// sort
|
|
51
|
+
versions.chrome.sort(_sortAsNumber)
|
|
52
|
+
versions.ff.sort(_sortAsNumber)
|
|
53
|
+
versions.edge.sort(_sortAsNumber)
|
|
54
|
+
versions.iosSaf.sort(_sortAsNumber)
|
|
55
|
+
versions.saf.sort(_sortAsNumber)
|
|
56
|
+
versions.opera.sort(_sortAsNumber)
|
|
57
|
+
versions.node.sort(_sortAsNumber)
|
|
58
|
+
|
|
59
|
+
return versions
|
|
60
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {_PackageTargetVersions} from './_parseBrowserslistVersions'
|
|
2
|
+
|
|
3
|
+
export function _parseNodeTarget(versions: _PackageTargetVersions): string[] | undefined {
|
|
4
|
+
const target: string[] = []
|
|
5
|
+
|
|
6
|
+
if (versions.node.length) {
|
|
7
|
+
target.push(`node${versions.node[0]}`)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (target.length === 0) {
|
|
11
|
+
return undefined
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return target
|
|
15
|
+
}
|
package/src/build/_parseTasks.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'path'
|
|
2
|
-
import {PackageSubPathExportEntry
|
|
2
|
+
import {PackageSubPathExportEntry} from '../core'
|
|
3
3
|
import {_BuildContext} from './_types'
|
|
4
4
|
import {_BuildTask, _DtsTask, _RollupTask} from './tasks'
|
|
5
5
|
|
|
@@ -49,11 +49,11 @@ export function _parseTasks(ctx: _BuildContext): _BuildTask[] {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
if (runtime === 'node') {
|
|
52
|
-
target.push(...
|
|
52
|
+
target.push(...ctx.target.node)
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
if (runtime === 'web') {
|
|
56
|
-
target.push(...
|
|
56
|
+
target.push(...ctx.target.web)
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
for (const f of format) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {_PackageTargetVersions} from './_parseBrowserslistVersions'
|
|
2
|
+
|
|
3
|
+
export function _parseWebTarget(versions: _PackageTargetVersions): string[] | undefined {
|
|
4
|
+
const target: string[] = []
|
|
5
|
+
|
|
6
|
+
if (versions.chrome.length) {
|
|
7
|
+
target.push(`chrome${versions.chrome[0]}`)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (versions.ff.length) {
|
|
11
|
+
target.push(`firefox${versions.ff[0]}`)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (versions.edge.length) {
|
|
15
|
+
target.push(`edge${versions.edge[0]}`)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (versions.iosSaf.length) {
|
|
19
|
+
target.push(`ios${versions.iosSaf[0]}`)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (versions.saf.length) {
|
|
23
|
+
target.push(`safari${versions.saf[0]}`)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (versions.opera.length) {
|
|
27
|
+
target.push(`opera${versions.opera[0]}`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (target.length === 0) {
|
|
31
|
+
return undefined
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return target
|
|
35
|
+
}
|
package/src/build/_types.ts
CHANGED
package/src/build/build.ts
CHANGED
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import path from 'path'
|
|
4
4
|
import chalk from 'chalk'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
PackageExports,
|
|
7
|
+
_DEFAULTS,
|
|
8
|
+
_loadConfig,
|
|
9
|
+
_loadPkg,
|
|
10
|
+
_parseExports,
|
|
11
|
+
_resolveConfigProperty,
|
|
12
|
+
} from '../core'
|
|
13
|
+
import {_parseBrowserslistVersions} from './_parseBrowserslistVersions'
|
|
14
|
+
import {_parseNodeTarget} from './_parseNodeTarget'
|
|
6
15
|
import {_parseTasks} from './_parseTasks'
|
|
16
|
+
import {_parseWebTarget} from './_parseWebTarget'
|
|
7
17
|
import {_BuildContext} from './_types'
|
|
8
18
|
import {_dtsTask, _extractTask, _rollupTask} from './tasks'
|
|
9
19
|
|
|
@@ -25,18 +35,16 @@ export async function build(options: {
|
|
|
25
35
|
return {...acc, [exportPath]: exportEntry}
|
|
26
36
|
}, {})
|
|
27
37
|
|
|
28
|
-
const exports = config?.exports
|
|
29
|
-
? _resolveConfigProperty(config.exports, parsedExports)
|
|
30
|
-
: parsedExports
|
|
38
|
+
const exports = _resolveConfigProperty(config?.exports, parsedExports)
|
|
31
39
|
|
|
32
|
-
const
|
|
40
|
+
const parsedExternal = [
|
|
33
41
|
...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),
|
|
34
42
|
...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),
|
|
35
43
|
]
|
|
36
44
|
|
|
37
|
-
const external = config?.external
|
|
38
|
-
|
|
39
|
-
|
|
45
|
+
const external = _resolveConfigProperty(config?.external, parsedExternal)
|
|
46
|
+
|
|
47
|
+
const targetVersions = _parseBrowserslistVersions(pkg.browserslist || _DEFAULTS.browserslist)
|
|
40
48
|
|
|
41
49
|
const srcPath = path.resolve(cwd, config?.src || 'src')
|
|
42
50
|
const distPath = path.resolve(cwd, config?.dist || 'dist')
|
|
@@ -51,11 +59,14 @@ export async function build(options: {
|
|
|
51
59
|
dist: path.relative(cwd, distPath),
|
|
52
60
|
pkg,
|
|
53
61
|
src: path.relative(cwd, srcPath),
|
|
62
|
+
target: {
|
|
63
|
+
node: _parseNodeTarget(targetVersions) || _DEFAULTS.target.node,
|
|
64
|
+
web: _parseWebTarget(targetVersions) || _DEFAULTS.target.web,
|
|
65
|
+
},
|
|
54
66
|
tsconfig,
|
|
55
67
|
}
|
|
56
68
|
|
|
57
69
|
console.log(chalk.gray('cwd '), context.cwd)
|
|
58
|
-
// console.log('external ', context.external)
|
|
59
70
|
console.log(chalk.gray('src '), context.src)
|
|
60
71
|
console.log(chalk.gray('dist '), context.dist)
|
|
61
72
|
console.log(chalk.gray('tsconfig '), context.tsconfig)
|
package/src/core/_defaults.ts
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
*/
|
|
4
4
|
export const _DEFAULTS = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
browserslist: [
|
|
6
|
+
'> 0.2% and supports es6-module and supports es6-module-dynamic-import',
|
|
7
|
+
'not dead',
|
|
8
|
+
'not IE 11',
|
|
9
|
+
'maintained node versions',
|
|
10
|
+
],
|
|
9
11
|
}
|
|
@@ -3,7 +3,9 @@ import {ConfigProperty, ConfigPropertyResolver} from './types'
|
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
6
|
-
export function _resolveConfigProperty<T>(prop: ConfigProperty<T
|
|
6
|
+
export function _resolveConfigProperty<T>(prop: ConfigProperty<T> | undefined, initialValue: T): T {
|
|
7
|
+
if (!prop) return initialValue
|
|
8
|
+
|
|
7
9
|
if (typeof prop === 'function') {
|
|
8
10
|
return (prop as ConfigPropertyResolver<T>)(initialValue)
|
|
9
11
|
}
|
package/src/core/config/types.ts
CHANGED