在使用rollup+babel打包es6代码做polyfill生成兼容老IE版本的代码时,polyfill未生效,报Unresolved dependencies警告。
我谷歌和参考过 https://segmentfault.com/q/1010000042335568 配置 @rollup/plugin-node-resolve
还是未成功,希望有大佬帮忙看看非常感谢,示例仓库demo地址如下:
https://github.com/NEOTSO/rollup-polyfill-demo
src/index.js → dist/umd.js...
(!) Unresolved dependencies
https://rollupjs.org/troubleshooting/#warning-treating-module-as-external-dependency
core-js/modules/es.string.starts-with.js (imported by "src/index.js")
core-js/modules/es.array.includes.js (imported by "src/index.js")
import { babel } from "@rollup/plugin-babel";
import commonjs from "@rollup/plugin-commonjs";
import { nodeResolve } from "@rollup/plugin-node-resolve";
export default {
input: "src/index.js",
output: {
file: "dist/umd.js",
format: "umd",
},
plugins: [nodeResolve(), commonjs(), babel({ babelHelpers: "bundled" })],
};
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"ie": "8"
},
"useBuiltIns": "usage",
"corejs": "3"
}
]
]
}
console.log("123".startsWith(1));
console.log([1, 2, 3].includes(1));
(function (factory) {
typeof define === 'function' && define.amd ? define(['core-js/modules/es.string.starts-with.js', 'core-js/modules/es.array.includes.js'], factory) :
factory();
})((function () { 'use strict';
console.log("123".startsWith(1));
console.log([1, 2, 3].includes(1));
}));
这部分 define(['core-js/modules/es.string.starts-with.js', 'core-js/modules/es.array.includes.js']
应该是 polyfill 没有成功吧。
踩坑记录
需要手动安装 npm install core-js@3 --save
详见文档:
https://babeljs.io/docs/babel-preset-env#usebuiltins
打包时后续还弹出一个警告:
(!) Circular dependencies
node_modules/core-js/modules/es.string.starts-with.js -> node_modules/core-js/modules/es.string.starts-with.js
M:\Work\TSO\rollup-demo\node_modules\core-js\internals\export.js?commonjs-proxy -> node_modules/core-js/internals/export.js -> M:\Work\TSO\rollup-demo\node_modules\core-js\internals\global.js?commonjs-proxy -> node_modules/core-js/internals/global.js -> node_modules/core-js/modules/esnext.global-this.js ->
解决方案:
rollup.config.js中babel插件添加 exclude
配置
plugins: [nodeResolve(), commonjs(), babel({ babelHelpers: "bundled", exclude: ['core-js'], })],
Edge模拟IE测试ok,安心去吃饭了,哎。
这里提供两个例子:
https://sourcegraph.com/github.com/TanStack/form/-/blob/rollu...
https://sourcegraph.com/github.com/TanStack/query/-/blob/roll...
再提供一个搜索的链接:https://sourcegraph.com/search?q=context%3Aglobal+rollup.conf...
Babel includes a polyfill that includes a custom regenerator runtime and core-js. This will emulate a full ES2015+ environment (no < Stage 4 proposals) and is intended to be used in an application rat
rollup.config.mjs中的babel配置如下: babel.config.json的配置如下: 我希望达到的效果是将@xyflow包中的“??”语法转换,按照上面的配置打包后,文件中依旧包含“??”语法,希望各位大佬解惑
我遇到了一些麻烦,让这个WebComponents polyfill+native-shim在所有设备上都能正常工作,尽管WebPack。 关于我的设置的一些背景:*Webpack2+babel-6*应用程序是用ES6编写的,转换到ES5*导入一个用ES6编写的包,它定义/注册应用程序中使用的 因此相关的webpack开发人员配置如下所示: 键取方式:*我需要在的模块>之前加载CustomElem
我在使用汇总编译Vue脚本时遇到问题。我得到的错误是 [!] 错误:节点_modules/vue/dist/vue未导出“openBlock”。运行时。esm。js,由src/js/components/TestButton导入。vue?vue app.js TestButton.vue 卷起来。配置。js 我尝试了很多不同的东西,但似乎没有任何帮助。但是,如果我在配置中的vuePlugin之前加
关于vue-cli4使用terser-webpack-plugin时, exclude不生效 我的目的就是想让utils.js文件下 console.* 都能打印 其余文件的console移除 vue-cli4本自带terser,使用过exclude,发现打印出来没有exclude于是安装了插件 接着自行升级了cli和安装terser-webpack-plugin "@vue/cli-servic
本文向大家介绍你有使用过babel-polyfill模块吗?主要是用来做什么的?相关面试题,主要包含被问及你有使用过babel-polyfill模块吗?主要是用来做什么的?时的应答技巧和注意事项,需要的朋友参考一下 Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbo