Skip to content

Commit f670758

Browse files
authored
perf: more optimize bundle size (#2065)
1 parent 3f4a529 commit f670758

File tree

7 files changed

+33
-16
lines changed

7 files changed

+33
-16
lines changed

Diff for: package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131
"build:sourcemap": "pnpm build --sourcemap",
3232
"build:type": "./scripts/build.sh",
3333
"build:typed": "pnpm build core-base vue-i18n-core --withTypes",
34-
"size": "tsx ./scripts/build.ts --size && tsx ./scripts/size.ts",
35-
"size:report": "tsx ./scripts/report-size.ts",
34+
"check-install": "tsx ./scripts/playwright.ts",
3635
"clean": "run-p clean:*",
3736
"clean:coverage": "rm -rf ./coverage",
3837
"clean:dist": "rm -rf ./dist ./packages/**/dist ./docs/.vitepress/dist",
3938
"clean:docs": "trash './docs/api/!(injection).md'",
4039
"clean:type": "rm -rf ./temp",
40+
"coverage": "opener coverage/index.html",
4141
"dev": "tsx ./scripts/dev.ts",
4242
"dev:e2e": "cross-env TZ=UTC vitest -c ./vitest.e2e.config.ts",
4343
"dev:eslint": "npx @eslint/config-inspector",
@@ -73,8 +73,8 @@
7373
"preview:size-petite-vue-i18n": "pnpm --filter @intlify/size-check-petite-vue-i18n preview",
7474
"preview:size-vue-i18n": "pnpm --filter @intlify/size-check-vue-i18n preview",
7575
"release": "bumpp package.json packages/**/package.json --commit \"release: v\" --push --tag",
76-
"check-install": "tsx ./scripts/playwright.ts",
77-
"coverage": "opener coverage/index.html",
76+
"size": "tsx ./scripts/build.ts --size && tsx ./scripts/size.ts",
77+
"size:report": "tsx ./scripts/report-size.ts",
7878
"test": "run-s lint test:cover check-install test:e2e",
7979
"test:cover": "pnpm test:unit --coverage",
8080
"test:e2e": "cross-env TZ=UTC vitest run -c ./vitest.e2e.config.ts",

Diff for: packages/core-base/src/compilation.ts

+18-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import {
2-
baseCompile as baseCompileCore,
2+
createParser,
33
defaultOnError,
4-
detectHtmlTag
4+
detectHtmlTag,
5+
mangle,
6+
optimize
57
} from '@intlify/message-compiler'
68
import {
79
create,
@@ -59,8 +61,17 @@ function baseCompile(
5961
onError(err)
6062
}
6163

62-
// compile with mesasge-compiler
63-
return { ...baseCompileCore(message, options), detectError }
64+
// parse source codes
65+
const parser = createParser(options)
66+
const ast = parser.parse(message)
67+
68+
// optimize ASTs
69+
options.optimize && optimize(ast)
70+
71+
// minimize ASTs
72+
options.mangle && mangle(ast)
73+
74+
return { ast, detectError, code: '' }
6475
}
6576

6677
/* #__NO_SIDE_EFFECTS__ */
@@ -94,11 +105,12 @@ export function compile<
94105
return cached
95106
}
96107

97-
// compile with JIT mode
108+
// compile message
98109
const { ast, detectError } = baseCompile(message, {
99110
...context,
100111
location: __DEV__,
101-
jit: true
112+
mangle: !__DEV__,
113+
optimize: !__DEV__
102114
})
103115

104116
// compose message function from AST

Diff for: packages/core-base/src/format.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ function resolveValue<Message = string>(
177177
node as Node,
178178
PROPS_VALUE
179179
) as MessageType<Message>
180-
if (resolved) {
180+
if (resolved != null) {
181181
return resolved
182182
} else {
183183
throw createUnhandleNodeError(type)

Diff for: packages/message-compiler/src/compiler.ts

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ export function baseCompile(
2424
const parser = createParser(assignedOptions)
2525
const ast = parser.parse(source)
2626

27+
// TODO:
28+
// With the introduction of Jit compilation, code generation is no longer necessary. This function may no longer be needed since tree-shaking is not possible.
29+
2730
if (!jit) {
2831
// transform ASTs
2932
transform(ast, assignedOptions)

Diff for: packages/message-compiler/src/index.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
export * from './compiler'
2+
export * from './errors'
3+
export * from './helpers'
14
export * from './location'
5+
export * from './mangler'
26
export * from './nodes'
7+
export * from './optimizer'
38
export * from './options'
4-
export * from './errors'
5-
export * from './helpers'
69
export * from './parser'
7-
export * from './compiler'

Diff for: packages/message-compiler/src/mangler.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import type {
1515
TextNode
1616
} from './nodes'
1717

18-
export const ERROR_DOMAIN = 'minifier'
18+
const ERROR_DOMAIN = 'minifier'
1919

2020
/* eslint-disable @typescript-eslint/no-explicit-any */
2121

Diff for: packages/message-compiler/src/optimizer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { NodeTypes } from './nodes'
21
import { join } from '@intlify/shared'
2+
import { NodeTypes } from './nodes'
33

44
import type { MessageNode, ResourceNode } from './nodes'
55

0 commit comments

Comments
 (0)