Visitar URL original
feat: use enum to replace const enum by xiaoxiangmoe · Pull Request #9261 · vuejs/core · GitHub
Skip to content

feat: use enum to replace const enum - #9261

Merged
yyx990803 merged 5 commits into
vuejs:minorfrom
xiaoxiangmoe:remove-const-enum
Nov 29, 2023
Merged

yyx990803 merged 5 commits into
vuejs:minorfrom
xiaoxiangmoe:remove-const-enum

Conversation

@xiaoxiangmoe

@xiaoxiangmoe xiaoxiangmoe commented Sep 21, 2023 •

Copy link
Copy Markdown
Contributor
  • change const enum to enum
  • change const-enum plugin to inline-enum plugin
  • add more types for plugin

@netlify

netlify Bot commented Sep 21, 2023

Copy link
Copy Markdown

❌ Deploy Preview for vue-sfc-playground failed.

Name Link
🔨 Latest commit 884bbce
🔍 Latest deploy log https://app.netlify.com/sites/vue-sfc-playground/deploys/650be692896ec10009cc7a04

@netlify

netlify Bot commented Sep 21, 2023

Copy link
Copy Markdown

❌ Deploy Preview for vue-next-template-explorer failed.

Name Link
🔨 Latest commit 884bbce
🔍 Latest deploy log https://app.netlify.com/sites/vue-next-template-explorer/deploys/650be692703bf70009bf6286

@xiaoxiangmoe
xiaoxiangmoe force-pushed the remove-const-enum branch 3 times, most recently from 601be9e to 1b49736 Compare September 21, 2023 07:18
@github-actions

github-actions Bot commented Sep 21, 2023 •

Copy link
Copy Markdown

Size Report

Bundles

File Size Gzip Brotli
runtime-dom.global.prod.js 88.8 kB (+2.34 kB) 33.8 kB (+920 B) 30.4 kB (+779 B)
vue.global.prod.js 135 kB (+2.34 kB) 50.6 kB (+934 B) 45.3 kB (+815 B)

Usages

Name Size Gzip Brotli
createApp 48 kB 18.9 kB 17.2 kB
createSSRApp 51.2 kB 20.2 kB 18.4 kB
defineCustomElement 50.4 kB 19.7 kB 18 kB
overall 61.4 kB 23.7 kB 21.6 kB

@sxzz sxzz added the ready to merge The PR is ready to be merged. label Sep 21, 2023
@yangmingshan

Copy link
Copy Markdown
Contributor

A competition PR #9263 😁

@sxzz sxzz removed the ready to merge The PR is ready to be merged. label Sep 21, 2023
@xiaoxiangmoe

Copy link
Copy Markdown
Contributor Author

@yangmingshan My PR did not consider enum reverse mapping, which is unsafe. Your PR is more safe.

@xiaoxiangmoe
xiaoxiangmoe force-pushed the remove-const-enum branch 4 times, most recently from c045410 to f3092e5 Compare September 26, 2023 06:23
yangmingshan

This comment was marked as resolved.

yangmingshan

This comment was marked as resolved.

@xiaoxiangmoe
xiaoxiangmoe force-pushed the remove-const-enum branch 2 times, most recently from 24471b9 to 9992964 Compare September 26, 2023 10:07
@yangmingshan

yangmingshan commented Sep 26, 2023 •

Copy link
Copy Markdown
Contributor

@sxzz Can we rerun the size bot? So we can compare the size.

@xiaoxiangmoe

Copy link
Copy Markdown
Contributor Author

@yangmingshan It's not about vue's size. It's about the size of application which using the new export enum.

@yangmingshan

Copy link
Copy Markdown
Contributor

@yangmingshan It's not about vue's size. It's about the size of application which using the new export enum.

I think this has a very slight impact on the size of the application.

@xiaoxiangmoe

xiaoxiangmoe commented Sep 26, 2023 •

Copy link
Copy Markdown
Contributor Author
Some source code in packages/compiler-core/src/errors.ts
export enum ErrorCodes {
  // parse errors
  ABRUPT_CLOSING_OF_EMPTY_COMMENT,
  CDATA_IN_HTML_CONTENT,
  DUPLICATE_ATTRIBUTE,
  END_TAG_WITH_ATTRIBUTES,
  END_TAG_WITH_TRAILING_SOLIDUS,
  EOF_BEFORE_TAG_NAME,
  EOF_IN_CDATA,
  EOF_IN_COMMENT,
  EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT,
  EOF_IN_TAG,
  INCORRECTLY_CLOSED_COMMENT,
  INCORRECTLY_OPENED_COMMENT,
  INVALID_FIRST_CHARACTER_OF_TAG_NAME,
  MISSING_ATTRIBUTE_VALUE,
  MISSING_END_TAG_NAME,
  MISSING_WHITESPACE_BETWEEN_ATTRIBUTES,
  NESTED_COMMENT,
  UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME,
  UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE,
  UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME,
  UNEXPECTED_NULL_CHARACTER,
  UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME,
  UNEXPECTED_SOLIDUS_IN_TAG,

  // Vue-specific parse errors
  X_INVALID_END_TAG,
  X_MISSING_END_TAG,
  X_MISSING_INTERPOLATION_END,
  X_MISSING_DIRECTIVE_NAME,
  X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END,

  // transform errors
  X_V_IF_NO_EXPRESSION,
  X_V_IF_SAME_KEY,
  X_V_ELSE_NO_ADJACENT_IF,
  X_V_FOR_NO_EXPRESSION,
  X_V_FOR_MALFORMED_EXPRESSION,
  X_V_FOR_TEMPLATE_KEY_PLACEMENT,
  X_V_BIND_NO_EXPRESSION,
  X_V_ON_NO_EXPRESSION,
  X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET,
  X_V_SLOT_MIXED_SLOT_USAGE,
  X_V_SLOT_DUPLICATE_SLOT_NAMES,
  X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN,
  X_V_SLOT_MISPLACED,
  X_V_MODEL_NO_EXPRESSION,
  X_V_MODEL_MALFORMED_EXPRESSION,
  X_V_MODEL_ON_SCOPE_VARIABLE,
  X_V_MODEL_ON_PROPS,
  X_INVALID_EXPRESSION,
  X_KEEP_ALIVE_INVALID_CHILDREN,

  // generic errors
  X_PREFIX_ID_NOT_SUPPORTED,
  X_MODULE_MODE_NOT_SUPPORTED,
  X_CACHE_HANDLER_NOT_SUPPORTED,
  X_SCOPE_ID_NOT_SUPPORTED,

  // deprecations
  DEPRECATION_VNODE_HOOKS,
  DEPRECATION_V_IS,

  // Special value for higher-order compilers to pick up the last code
  // to avoid collision of error codes. This should always be kept as the last
  // item.
  __EXTEND_POINT__
}

Try to code code below to here

https://try.terser.org/

const ErrorCodesObject = {
  "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0,
  "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT",
  "CDATA_IN_HTML_CONTENT": 1,
  "1": "CDATA_IN_HTML_CONTENT",
  "DUPLICATE_ATTRIBUTE": 2,
  "2": "DUPLICATE_ATTRIBUTE",
  "END_TAG_WITH_ATTRIBUTES": 3,
  "3": "END_TAG_WITH_ATTRIBUTES",
  "END_TAG_WITH_TRAILING_SOLIDUS": 4,
  "4": "END_TAG_WITH_TRAILING_SOLIDUS",
  "EOF_BEFORE_TAG_NAME": 5,
  "5": "EOF_BEFORE_TAG_NAME",
  "EOF_IN_CDATA": 6,
  "6": "EOF_IN_CDATA",
  "EOF_IN_COMMENT": 7,
  "7": "EOF_IN_COMMENT",
  "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8,
  "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT",
  "EOF_IN_TAG": 9,
  "9": "EOF_IN_TAG",
  "INCORRECTLY_CLOSED_COMMENT": 10,
  "10": "INCORRECTLY_CLOSED_COMMENT",
  "INCORRECTLY_OPENED_COMMENT": 11,
  "11": "INCORRECTLY_OPENED_COMMENT",
  "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12,
  "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME",
  "MISSING_ATTRIBUTE_VALUE": 13,
  "13": "MISSING_ATTRIBUTE_VALUE",
  "MISSING_END_TAG_NAME": 14,
  "14": "MISSING_END_TAG_NAME",
  "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15,
  "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES",
  "NESTED_COMMENT": 16,
  "16": "NESTED_COMMENT",
  "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17,
  "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME",
  "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18,
  "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE",
  "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19,
  "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME",
  "UNEXPECTED_NULL_CHARACTER": 20,
  "20": "UNEXPECTED_NULL_CHARACTER",
  "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21,
  "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME",
  "UNEXPECTED_SOLIDUS_IN_TAG": 22,
  "22": "UNEXPECTED_SOLIDUS_IN_TAG",
  "X_INVALID_END_TAG": 23,
  "23": "X_INVALID_END_TAG",
  "X_MISSING_END_TAG": 24,
  "24": "X_MISSING_END_TAG",
  "X_MISSING_INTERPOLATION_END": 25,
  "25": "X_MISSING_INTERPOLATION_END",
  "X_MISSING_DIRECTIVE_NAME": 26,
  "26": "X_MISSING_DIRECTIVE_NAME",
  "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27,
  "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END",
  "X_V_IF_NO_EXPRESSION": 28,
  "28": "X_V_IF_NO_EXPRESSION",
  "X_V_IF_SAME_KEY": 29,
  "29": "X_V_IF_SAME_KEY",
  "X_V_ELSE_NO_ADJACENT_IF": 30,
  "30": "X_V_ELSE_NO_ADJACENT_IF",
  "X_V_FOR_NO_EXPRESSION": 31,
  "31": "X_V_FOR_NO_EXPRESSION",
  "X_V_FOR_MALFORMED_EXPRESSION": 32,
  "32": "X_V_FOR_MALFORMED_EXPRESSION",
  "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33,
  "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT",
  "X_V_BIND_NO_EXPRESSION": 34,
  "34": "X_V_BIND_NO_EXPRESSION",
  "X_V_ON_NO_EXPRESSION": 35,
  "35": "X_V_ON_NO_EXPRESSION",
  "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36,
  "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET",
  "X_V_SLOT_MIXED_SLOT_USAGE": 37,
  "37": "X_V_SLOT_MIXED_SLOT_USAGE",
  "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38,
  "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES",
  "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39,
  "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN",
  "X_V_SLOT_MISPLACED": 40,
  "40": "X_V_SLOT_MISPLACED",
  "X_V_MODEL_NO_EXPRESSION": 41,
  "41": "X_V_MODEL_NO_EXPRESSION",
  "X_V_MODEL_MALFORMED_EXPRESSION": 42,
  "42": "X_V_MODEL_MALFORMED_EXPRESSION",
  "X_V_MODEL_ON_SCOPE_VARIABLE": 43,
  "43": "X_V_MODEL_ON_SCOPE_VARIABLE",
  "X_V_MODEL_ON_PROPS": 44,
  "44": "X_V_MODEL_ON_PROPS",
  "X_INVALID_EXPRESSION": 45,
  "45": "X_INVALID_EXPRESSION",
  "X_KEEP_ALIVE_INVALID_CHILDREN": 46,
  "46": "X_KEEP_ALIVE_INVALID_CHILDREN",
  "X_PREFIX_ID_NOT_SUPPORTED": 47,
  "47": "X_PREFIX_ID_NOT_SUPPORTED",
  "X_MODULE_MODE_NOT_SUPPORTED": 48,
  "48": "X_MODULE_MODE_NOT_SUPPORTED",
  "X_CACHE_HANDLER_NOT_SUPPORTED": 49,
  "49": "X_CACHE_HANDLER_NOT_SUPPORTED",
  "X_SCOPE_ID_NOT_SUPPORTED": 50,
  "50": "X_SCOPE_ID_NOT_SUPPORTED",
  "DEPRECATION_VNODE_HOOKS": 51,
  "51": "DEPRECATION_VNODE_HOOKS",
  "DEPRECATION_V_IS": 52,
  "52": "DEPRECATION_V_IS",
  "__EXTEND_POINT__": 53,
  "53": "__EXTEND_POINT__"
};

var ErrorCodes;
(function (ErrorCodes) {
    // parse errors
    ErrorCodes[ErrorCodes["ABRUPT_CLOSING_OF_EMPTY_COMMENT"] = 0] = "ABRUPT_CLOSING_OF_EMPTY_COMMENT";
    ErrorCodes[ErrorCodes["CDATA_IN_HTML_CONTENT"] = 1] = "CDATA_IN_HTML_CONTENT";
    ErrorCodes[ErrorCodes["DUPLICATE_ATTRIBUTE"] = 2] = "DUPLICATE_ATTRIBUTE";
    ErrorCodes[ErrorCodes["END_TAG_WITH_ATTRIBUTES"] = 3] = "END_TAG_WITH_ATTRIBUTES";
    ErrorCodes[ErrorCodes["END_TAG_WITH_TRAILING_SOLIDUS"] = 4] = "END_TAG_WITH_TRAILING_SOLIDUS";
    ErrorCodes[ErrorCodes["EOF_BEFORE_TAG_NAME"] = 5] = "EOF_BEFORE_TAG_NAME";
    ErrorCodes[ErrorCodes["EOF_IN_CDATA"] = 6] = "EOF_IN_CDATA";
    ErrorCodes[ErrorCodes["EOF_IN_COMMENT"] = 7] = "EOF_IN_COMMENT";
    ErrorCodes[ErrorCodes["EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT"] = 8] = "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT";
    ErrorCodes[ErrorCodes["EOF_IN_TAG"] = 9] = "EOF_IN_TAG";
    ErrorCodes[ErrorCodes["INCORRECTLY_CLOSED_COMMENT"] = 10] = "INCORRECTLY_CLOSED_COMMENT";
    ErrorCodes[ErrorCodes["INCORRECTLY_OPENED_COMMENT"] = 11] = "INCORRECTLY_OPENED_COMMENT";
    ErrorCodes[ErrorCodes["INVALID_FIRST_CHARACTER_OF_TAG_NAME"] = 12] = "INVALID_FIRST_CHARACTER_OF_TAG_NAME";
    ErrorCodes[ErrorCodes["MISSING_ATTRIBUTE_VALUE"] = 13] = "MISSING_ATTRIBUTE_VALUE";
    ErrorCodes[ErrorCodes["MISSING_END_TAG_NAME"] = 14] = "MISSING_END_TAG_NAME";
    ErrorCodes[ErrorCodes["MISSING_WHITESPACE_BETWEEN_ATTRIBUTES"] = 15] = "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES";
    ErrorCodes[ErrorCodes["NESTED_COMMENT"] = 16] = "NESTED_COMMENT";
    ErrorCodes[ErrorCodes["UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME"] = 17] = "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME";
    ErrorCodes[ErrorCodes["UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE"] = 18] = "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE";
    ErrorCodes[ErrorCodes["UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME"] = 19] = "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME";
    ErrorCodes[ErrorCodes["UNEXPECTED_NULL_CHARACTER"] = 20] = "UNEXPECTED_NULL_CHARACTER";
    ErrorCodes[ErrorCodes["UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME"] = 21] = "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME";
    ErrorCodes[ErrorCodes["UNEXPECTED_SOLIDUS_IN_TAG"] = 22] = "UNEXPECTED_SOLIDUS_IN_TAG";
    // Vue-specific parse errors
    ErrorCodes[ErrorCodes["X_INVALID_END_TAG"] = 23] = "X_INVALID_END_TAG";
    ErrorCodes[ErrorCodes["X_MISSING_END_TAG"] = 24] = "X_MISSING_END_TAG";
    ErrorCodes[ErrorCodes["X_MISSING_INTERPOLATION_END"] = 25] = "X_MISSING_INTERPOLATION_END";
    ErrorCodes[ErrorCodes["X_MISSING_DIRECTIVE_NAME"] = 26] = "X_MISSING_DIRECTIVE_NAME";
    ErrorCodes[ErrorCodes["X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END"] = 27] = "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END";
    // transform errors
    ErrorCodes[ErrorCodes["X_V_IF_NO_EXPRESSION"] = 28] = "X_V_IF_NO_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_IF_SAME_KEY"] = 29] = "X_V_IF_SAME_KEY";
    ErrorCodes[ErrorCodes["X_V_ELSE_NO_ADJACENT_IF"] = 30] = "X_V_ELSE_NO_ADJACENT_IF";
    ErrorCodes[ErrorCodes["X_V_FOR_NO_EXPRESSION"] = 31] = "X_V_FOR_NO_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_FOR_MALFORMED_EXPRESSION"] = 32] = "X_V_FOR_MALFORMED_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_FOR_TEMPLATE_KEY_PLACEMENT"] = 33] = "X_V_FOR_TEMPLATE_KEY_PLACEMENT";
    ErrorCodes[ErrorCodes["X_V_BIND_NO_EXPRESSION"] = 34] = "X_V_BIND_NO_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_ON_NO_EXPRESSION"] = 35] = "X_V_ON_NO_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET"] = 36] = "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET";
    ErrorCodes[ErrorCodes["X_V_SLOT_MIXED_SLOT_USAGE"] = 37] = "X_V_SLOT_MIXED_SLOT_USAGE";
    ErrorCodes[ErrorCodes["X_V_SLOT_DUPLICATE_SLOT_NAMES"] = 38] = "X_V_SLOT_DUPLICATE_SLOT_NAMES";
    ErrorCodes[ErrorCodes["X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN"] = 39] = "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN";
    ErrorCodes[ErrorCodes["X_V_SLOT_MISPLACED"] = 40] = "X_V_SLOT_MISPLACED";
    ErrorCodes[ErrorCodes["X_V_MODEL_NO_EXPRESSION"] = 41] = "X_V_MODEL_NO_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_MODEL_MALFORMED_EXPRESSION"] = 42] = "X_V_MODEL_MALFORMED_EXPRESSION";
    ErrorCodes[ErrorCodes["X_V_MODEL_ON_SCOPE_VARIABLE"] = 43] = "X_V_MODEL_ON_SCOPE_VARIABLE";
    ErrorCodes[ErrorCodes["X_V_MODEL_ON_PROPS"] = 44] = "X_V_MODEL_ON_PROPS";
    ErrorCodes[ErrorCodes["X_INVALID_EXPRESSION"] = 45] = "X_INVALID_EXPRESSION";
    ErrorCodes[ErrorCodes["X_KEEP_ALIVE_INVALID_CHILDREN"] = 46] = "X_KEEP_ALIVE_INVALID_CHILDREN";
    // generic errors
    ErrorCodes[ErrorCodes["X_PREFIX_ID_NOT_SUPPORTED"] = 47] = "X_PREFIX_ID_NOT_SUPPORTED";
    ErrorCodes[ErrorCodes["X_MODULE_MODE_NOT_SUPPORTED"] = 48] = "X_MODULE_MODE_NOT_SUPPORTED";
    ErrorCodes[ErrorCodes["X_CACHE_HANDLER_NOT_SUPPORTED"] = 49] = "X_CACHE_HANDLER_NOT_SUPPORTED";
    ErrorCodes[ErrorCodes["X_SCOPE_ID_NOT_SUPPORTED"] = 50] = "X_SCOPE_ID_NOT_SUPPORTED";
    // deprecations
    ErrorCodes[ErrorCodes["DEPRECATION_VNODE_HOOKS"] = 51] = "DEPRECATION_VNODE_HOOKS";
    ErrorCodes[ErrorCodes["DEPRECATION_V_IS"] = 52] = "DEPRECATION_V_IS";
    // Special value for higher-order compilers to pick up the last code
    // to avoid collision of error codes. This should always be kept as the last
    // item.
    ErrorCodes[ErrorCodes["__EXTEND_POINT__"] = 53] = "__EXTEND_POINT__";
})(ErrorCodes || (ErrorCodes = {}));

console.log(ErrorCodesObject.ABRUPT_CLOSING_OF_EMPTY_COMMENT)
console.log(ErrorCodes.ABRUPT_CLOSING_OF_EMPTY_COMMENT)

Then you can see result

var _;!function(_){_[_.ABRUPT_CLOSING_OF_EMPTY_COMMENT=0]="ABRUPT_CLOSING_OF_EMPTY_COMMENT", 
// more than 3KiB size of code here
}(_||(_={})),

console.log(0),
console.log(_.ABRUPT_CLOSING_OF_EMPTY_COMMENT);

If some application user use enum export in vue, it will increase many size.
For example, it someone only use ErrorCodes.ABRUPT_CLOSING_OF_EMPTY_COMMENT in his application, it will increase more than 3KiB in his app.
So we should convert enum to object to make it uglify friendly.

@yangmingshan

yangmingshan commented Sep 26, 2023 •

Copy link
Copy Markdown
Contributor

I'm not sure if bundler and minifier can handle it perfectly (cross module boundary). But yeah, I get the idea.

Comment thread scripts/simplify-enum.js Resolved
yangmingshan

This comment was marked as resolved.

@xiaoxiangmoe

xiaoxiangmoe commented Sep 26, 2023 •

Copy link
Copy Markdown
Contributor Author

I'm not sure if bundler and minifier can handle it perfectly (cross module boundary). But yeah, I get the idea.

You can try it

import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [],
  build: {
    minify: 'terser'
  }
})

And add code to here
image

image

The generated result is:
image

@sxzz

sxzz commented Sep 26, 2023

Copy link
Copy Markdown
Member

@sxzz Can we rerun the size bot? So we can compare the size.

Done.

@yangmingshan

Copy link
Copy Markdown
Contributor

LGTM

@xiaoxiangmoe
xiaoxiangmoe force-pushed the remove-const-enum branch 4 times, most recently from 533cfa9 to 7f1c6c7 Compare September 27, 2023 14:06
Comment thread scripts/simplify-enum.js Resolved
@sxzz

sxzz commented Sep 28, 2023

Copy link
Copy Markdown
Member

Should we always export enums? The bundle size of the browser version increased ~750b
/cc @yyx990803

@xiaoxiangmoe
xiaoxiangmoe requested a review from sxzz October 4, 2023 09:54
@sxzz sxzz added 🍰 p2-nice-to-have Priority 2: this is not breaking anything but nice to have it addressed. ready for review This PR requires more reviews labels Nov 2, 2023
@sxzz
sxzz force-pushed the remove-const-enum branch from 7f1c6c7 to b84dca5 Compare November 2, 2023 12:56
@xiaoxiangmoe
xiaoxiangmoe force-pushed the remove-const-enum branch 3 times, most recently from 07c6b95 to 48ce2e2 Compare November 8, 2023 09:30
@yyx990803
yyx990803 changed the base branch from main to minor November 29, 2023 03:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🍰 p2-nice-to-have Priority 2: this is not breaking anything but nice to have it addressed. ready for review This PR requires more reviews

Projects

Development

Successfully merging this pull request may close these issues.

5 participants