Javascript Webpack 2 UMD库对象为空
我正在尝试在Webpack中编写一个UMD库,它被分解成多个可以手动加载的文件。这不是我的偏好,但这是需求的一部分 我已经有了CommonChunkPlugin,它可以将所有库和文件提取到它们自己的可加载文件中。以下是网页包配置文件:Javascript Webpack 2 UMD库对象为空,javascript,webpack,webpack-2,Javascript,Webpack,Webpack 2,我正在尝试在Webpack中编写一个UMD库,它被分解成多个可以手动加载的文件。这不是我的偏好,但这是需求的一部分 我已经有了CommonChunkPlugin,它可以将所有库和文件提取到它们自己的可加载文件中。以下是网页包配置文件: let plugins = [ new webpack.optimize.CommonsChunkPlugin({ name: 'gm-components', filename: '[name].js', minChunks(module, coun
let plugins = [ new webpack.optimize.CommonsChunkPlugin({
name: 'gm-components',
filename: '[name].js',
minChunks(module, count) {
let context = module.context;
let chunk = module.chunks && module.chunks[0];
return ( chunk && chunk.name == 'components.js' ) ||
( context && context.match(/preact|prop-types/i) );
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'gm-dates',
filename: '[name].js',
chunks: ['dates.js', 'gm-misc.js', 'gm-cart.js'],
minChunks(module, count) {
let context = module.context;
let chunk = module.chunks && module.chunks[0];
return ( chunk && chunk.name == 'dates.js' ) ||
( context && context.match(/supercal|fecha/i) );
}
})];
module.exports = {
entry: {
"components.js": './src/js/components.js',
"dates.js": "./src/js/dates.js",
"gm-misc.js": "./src/js/misc.js",
"gm-cart.js": "./src/js/cart.js"
},
output: {
path: path.resolve(__dirname, 'assets'),
filename: '[name]',
library: 'GMComponents',
libraryTarget: 'umd',
umdNamedDefine: true,
}
};
src
中的所有文件都是非常独立的,但是我希望有一个通用的组件构造函数。在src/js/components.js
中,我有以下代码:
import { render as domRender} from 'react-dom';
import React, { createElement } from 'react';
export var components = {};
export var render = (ele, name, props, callback) => {
let klass = components[name];
let comp = createElement(klass, props || {});
return domRender(comp, ele, callback);
};
不幸的是,我在
window.GMComponents
中得到的只是一个空对象。CommonChunkPlugin是否使我无法包含通用的函数?我认为每个脚本都会覆盖该对象,包括,actual。很可能我的做法完全错误,只需要不将其放入配置的库部分,而是以手动方式进行。这是一个棘手的问题。但是,从逻辑上讲,如果您希望将对象公开到全局范围(在本例中为window
),您的库目标应该是this
或将对象附加到全局范围的任何配置