Skip to content

Commit ca73b8f

Browse files
feat(build): uses non-polluting polyfills
replace preset-env + useBuiltIns with preset-env + polyfill-corejs3(usage-pure) + babel-plugin-polyfill-regenerator(usage-pure)
1 parent d54c43c commit ca73b8f

File tree

3 files changed

+38
-30
lines changed

3 files changed

+38
-30
lines changed

build/webpack.config.js

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,6 @@ const configure = ({name, vueTarget, libraryTargetModule}) => (env = {}, { mode
9393
},
9494

9595
entry: [
96-
'core-js',
97-
'regenerator-runtime',
9896
Path.resolve(__dirname, '../src/index.ts'),
9997
],
10098

@@ -190,15 +188,17 @@ const configure = ({name, vueTarget, libraryTargetModule}) => (env = {}, { mode
190188
arrows: caniuse.isSupported('arrow-functions', targetsBrowsers),
191189
ecma: caniuse.isSupported('es6', targetsBrowsers) ? '2015' : '5', // note ECMAScript 2015 is the sixth edition of the ECMAScript Language Specification standard
192190
} : {},
193-
unsafe: true,
194-
unsafe_comps: true,
195-
unsafe_Function: true,
196-
unsafe_math: true,
197-
unsafe_symbols: true,
198-
unsafe_methods: caniuse.isSupported('es6', targetsBrowsers),
199-
unsafe_proto: true,
200-
unsafe_regexp: true,
201-
unsafe_undefined: true,
191+
192+
// beware, unsafe: true is not suitable for this project !
193+
// unsafe: true,
194+
// unsafe_comps: true,
195+
// unsafe_Function: true,
196+
// unsafe_math: true,
197+
// unsafe_symbols: true,
198+
// unsafe_methods: caniuse.isSupported('es6', targetsBrowsers),
199+
// unsafe_proto: true,
200+
// unsafe_regexp: true,
201+
// unsafe_undefined: true,
202202
},
203203
},
204204
}),
@@ -340,38 +340,45 @@ ${ pkg.name } v${ pkg.version } for vue${ vueTarget }
340340
module: {
341341
rules: [
342342
isProd ? {
343-
test: /\.(mjs|js|ts)$/,
343+
test: /\.(mjs|js|cjs|ts)$/,
344344
exclude: [
345-
/core-js/, // Babel should not transpile core-js for correct work.
345+
/core-js-pure/, // Babel should not transpile core-js for correct work.
346346
/regenerator-runtime/, // transpile not needed
347347
],
348348
use: {
349349
loader: 'babel-loader',
350350
options: {
351351
compact: !noCompress,
352352
sourceMaps: !noSourceMap,
353-
353+
sourceType: 'unambiguous', // doc: https://babeljs.io/docs/en/options#sourcetype
354+
targets: targetsBrowsers,
354355
presets: [
355356

356357
...!noPresetEnv ? [
357358
[
358359
'@babel/preset-env',
359360
{
360-
useBuiltIns: 'entry', // https://babeljs.io/docs/en/babel-preset-env#usebuiltins
361-
corejs: {
362-
version: 3,
363-
proposals: true
364-
},
365-
forceAllTransforms: true,
366-
targets: {
367-
browsers: targetsBrowsers,
368-
},
369361
}
370362
]
371363
] : [],
372364
],
373-
374365
plugins: [
366+
367+
...!noPresetEnv ? [
368+
[
369+
"polyfill-corejs3",
370+
{
371+
"method": "usage-pure"
372+
}
373+
],
374+
[
375+
'babel-plugin-polyfill-regenerator',
376+
{
377+
"method": "usage-pure"
378+
}
379+
]
380+
] : [],
381+
375382
],
376383
}
377384
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,12 @@
6464
"@vue/shared": "^3.0.11",
6565
"assert": "^2.0.0",
6666
"babel-loader": "^8.2.2",
67+
"babel-plugin-polyfill-corejs3": "^0.2.3",
6768
"bn.js": "5",
6869
"buffer": "^6.0.3",
6970
"caniuse-api": "^3.0.0",
7071
"compression-webpack-plugin": "^8.0.0",
71-
"core-js": "^3.15.0",
72+
"core-js-pure": "^3.15.1",
7273
"cross-env": "^7.0.3",
7374
"dts-bundle": "^0.7.3",
7475
"duplicate-package-checker-webpack-plugin": "^3.0.0",

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2161,7 +2161,7 @@ babel-plugin-polyfill-corejs2@^0.2.2:
21612161
"@babel/helper-define-polyfill-provider" "^0.2.2"
21622162
semver "^6.1.1"
21632163

2164-
babel-plugin-polyfill-corejs3@^0.2.2:
2164+
babel-plugin-polyfill-corejs3@^0.2.2, babel-plugin-polyfill-corejs3@^0.2.3:
21652165
version "0.2.3"
21662166
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz#72add68cf08a8bf139ba6e6dfc0b1d504098e57b"
21672167
integrity sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==
@@ -2819,10 +2819,10 @@ core-js-compat@^3.14.0, core-js-compat@^3.15.0:
28192819
browserslist "^4.16.6"
28202820
semver "7.0.0"
28212821

2822-
core-js@^3.15.0:
2823-
version "3.15.0"
2824-
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.0.tgz#db9554ebce0b6fd90dc9b1f2465c841d2d055044"
2825-
integrity sha512-GUbtPllXMYRzIgHNZ4dTYTcUemls2cni83Q4Q/TrFONHfhcg9oEGOtaGHfb0cpzec60P96UKPvMkjX1jET8rUw==
2822+
core-js-pure@^3.15.1:
2823+
version "3.15.1"
2824+
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.15.1.tgz#8356f6576fa2aa8e54ca6fe02620968ff010eed7"
2825+
integrity sha512-OZuWHDlYcIda8sJLY4Ec6nWq2hRjlyCqCZ+jCflyleMkVt3tPedDVErvHslyS2nbO+SlBFMSBJYvtLMwxnrzjA==
28262826

28272827
[email protected], core-util-is@~1.0.0:
28282828
version "1.0.2"

0 commit comments

Comments
 (0)