在 webpack 中使 babel6 支持 Array.from 的最佳方法是什么?
what`s the best way to make babel6 support Array.from in webpack?
我正在使用下面的 webpack 配置:
var path = require('path');
var webpack = require('webpack');
module.exports = {
plugins: [
new webpack.ProvidePlugin({
'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
})
],
entry: {
demo1 : ['babel-polyfill', './src/js/page/demo1.js']
},
output: {
path: 'dist/js/page',
filename: '[name].js'
},
devtool: 'eval-source-map',
module: {
loaders: [
{
test: /\.js$/,
include: [
path.resolve(__dirname, "src")
],
exclude: path.resolve(__dirname, "node_modules"),
loader: "babel-loader",
query: {
plugins: ['transform-runtime'],
presets: ['es2015', 'react']
}
},
{ test: /\.scss$/, loader: 'style!css!sass?sourceMap'}
]
},
resolve: {
root: path.resolve(__dirname, "src"),
extensions: ['', '.js', '.json', '.scss']
}
};
如图所示,我将整个babel-polyfill
模块合并到入口文件demo1.js
以支持Array.from
。但我不认为这样做是个好主意,因为它会使入口文件变得太多。
所以这里有任何 loader
/plugin
/preset
可以用来支持 webpack 中的 Array.from
,就像 babel-polyfill
所做的那样?
然后你会想直接与 core-js
集成,这就是 Babel 在后台使用的功能。然后,您可以通过明确要求各个模块来挑选要提供兼容性的功能。
require('core-js/fn/array/from');
// Then, from within any module:
Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
这就是 Babel 6 通过预设有效地为您设置的内容。
我知道这个帖子很旧,但我在谷歌搜索时偶然发现了它。
另一种方法是放弃 babel-polyfill
并使用 dynamic-polyfill
。
https://www.npmjs.com/package/dynamic-polyfill
你可以选择
import polyfill from 'dynamic-polyfill'
polyfill({
fills: ['Array.from'],
afterFill() {
// your code
}
})
然后浏览器仅在需要时才下载 polyfill。
我正在使用下面的 webpack 配置:
var path = require('path');
var webpack = require('webpack');
module.exports = {
plugins: [
new webpack.ProvidePlugin({
'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'
})
],
entry: {
demo1 : ['babel-polyfill', './src/js/page/demo1.js']
},
output: {
path: 'dist/js/page',
filename: '[name].js'
},
devtool: 'eval-source-map',
module: {
loaders: [
{
test: /\.js$/,
include: [
path.resolve(__dirname, "src")
],
exclude: path.resolve(__dirname, "node_modules"),
loader: "babel-loader",
query: {
plugins: ['transform-runtime'],
presets: ['es2015', 'react']
}
},
{ test: /\.scss$/, loader: 'style!css!sass?sourceMap'}
]
},
resolve: {
root: path.resolve(__dirname, "src"),
extensions: ['', '.js', '.json', '.scss']
}
};
如图所示,我将整个babel-polyfill
模块合并到入口文件demo1.js
以支持Array.from
。但我不认为这样做是个好主意,因为它会使入口文件变得太多。
所以这里有任何 loader
/plugin
/preset
可以用来支持 webpack 中的 Array.from
,就像 babel-polyfill
所做的那样?
然后你会想直接与 core-js
集成,这就是 Babel 在后台使用的功能。然后,您可以通过明确要求各个模块来挑选要提供兼容性的功能。
require('core-js/fn/array/from');
// Then, from within any module:
Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
这就是 Babel 6 通过预设有效地为您设置的内容。
我知道这个帖子很旧,但我在谷歌搜索时偶然发现了它。
另一种方法是放弃 babel-polyfill
并使用 dynamic-polyfill
。
https://www.npmjs.com/package/dynamic-polyfill
你可以选择
import polyfill from 'dynamic-polyfill'
polyfill({
fills: ['Array.from'],
afterFill() {
// your code
}
})
然后浏览器仅在需要时才下载 polyfill。