webpack的模块打包

webpack以模块方式导出的配置 

module.exports = {
    entry: 'XX',
    mode: 'development',
    devtool: 'cheap-module',
    output: {
        filename: 'XX',
        path: 'XXX',
        library: 'MyLibrary',
        libraryTarget: 'umd',
    }
}

模块打包主要依赖于output配置的librayTarget,它决定模块导出的类型,类型主要有三大类:

(下面例子中的_entry_return代表模块的导出)

作为变量导出

libraryTarget: 'var'
library: 'MyLibrary'

// 最后生成代码大概就是
var MyLibrary = _entry_return

作为对象导出

libraryTarget: "window"
library: 'MyLibrary'

window['MyLibrary'] = _entry_return_;

作为模块导出

经典的cmd、amd、umd 这3中导出方式,虽然esm的模块方案已成为主流,但是浏览器跑不了。

cmd

libraryTarget: 'commonjs2'
library: 'MyLibrary'        // 会被忽略

module.exports = _entry_return_;

amd

libraryTarget: 'amd',
library: 'MyLibrary',

define('MyLibrary', [], function() {
    return _entry_return;
})

umd

libraryTarget: 'umd'
library: 'MyLibrary'

(function webpackUniversalModuleDefinition(root, factory) {
  if(typeof exports === 'object' && typeof module === 'object')
    module.exports = factory();
  else if(typeof define === 'function' && define.amd)
    define([], factory);
  else if(typeof exports === 'object')
    exports['MyLibrary'] = factory();
  else
    root['MyLibrary'] = factory();
})(typeof self !== 'undefined' ? self : this, function() {
  return _entry_return_;
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值