Creeper
Creeper
@nlffeng 考虑下搭配 `NamedModulesPlugin/HashedModuleIdsPlugin` 使用。
@cqq626 可以设置`stats.chunks/stats.children`等,查看webpack实际是怎么为你处理的。
@mengxingshike2012 `babel-loader`的 [peerDependencies](https://github.com/babel/babel-loader/blob/master/package.json): ```js "peerDependencies": { "babel-core": "^6.0.0", "webpack": "1 || 2 || ^2.1.0-beta || ^2.2.0-rc" }, ```
@lgh06 才知道`babel-preset-env` 👍 是个不错的选择,不过看起来它是依赖指定node版本或者browser版本来决定引入哪些polyfill的;如果不用内置对象原型上的方法,`babel-runtime`可能更好一点。
@For-me 我觉得是库作者的责任,他应该提供转换后的可用库文件,或者明确告知使用者必须自己转换。
@xwenliang 很好的问题。 我仔细查阅了文档,答案是 `[email protected]` 没法很好地消除未使用的polyfill(就是说有未使用的代码被引入进来了)。如果希望避免这一点,那么就会禁用`useBuiltIns: true`,而用更好的 `transform-runtime` 代替。 在 `[email protected]` 中可以用 `useBuiltIns: 'usage'` 达到按需引入的目的。 详情可见: https://github.com/babel/babel-preset-env/issues/84 https://github.com/babel/babel-preset-env/pull/241 --- 可以看到 [vuejs-templates/webpack/](https://github.com/vuejs-templates/webpack) 引入的是 **1.3** 的`babel-preset-env`。
## `Babel 7` 及新用法 [`Babel 7`](https://babeljs.io/blog/2017/12/27/nearing-the-7.0-release) 快正式发布了(2018-06-20是`@babel/core@^7.0.0-beta.51`),相比6有非常多的更新,这里例举一些主要的,详情可以阅读官方博文。 - deprecated Yearly Presets (如 babel-preset-es20xx),preset-env 代替 - 最新更新的 TC39 Proposals - 重命名,`@babel` scope (防止被占用) - ... ### presets 详解 babel 的工作流是 ```...
@cuiyongjian @YardWill 其实按你们的说法,既然polyfill全引入了,怎么还会有 `ReferenceError: regeneratorRuntime is not defined` 的错误? **对于 `useBuiltIns: false`,babel 将不会加入任何 polyfill。** 可以打开`debug`看到调试信息: `Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.`
@YardWill 理解你的意思了。你手动引入了`@babel/polyfill`,再设置`useBuiltIns: false`,这就是告诉`preset-env`不要处理任何有关polyfill的事(你自己会手动处理,即你手动引入了`@babel/polyfill`)。 所以我的意思是对的:**设置`useBuiltIns: false`时,babel不会帮你处理任何polyfill的事,你必须手动处理。**
@YardWill @HsuTing 以一个简单示例来说明。有文件 `test.js` 如下: ```js async function hello(a) { console.log(a); } hello(Promise.resolve(1)); ``` 我们用不同的babel配置来验证一些东西。 **1. 如果只设置`useBuiltIns: false`**: 可以看到,由于`transform-async-to-generator` plugin起作用,`async/wait`被翻译到了`regeneratorRuntime`; 但是`regeneratorRuntime`和`Promise`都没有相应的polyfill被引入——即polyfill完全被忽略(不处理)。 ```js "use strict"; function asyncGeneratorStep(gen, resolve, reject, _next, _throw,...