Shimming预置依赖
预置全局变量
例如lodash:

细颗粒度shimming
当模块运行在commonjs上下文中,this指向的是module.exports并不是window,所以可以覆盖一下。
安装npm i imports-loader -D
配置后this指向window:

全局Exports
全局导出一个模块:

加载Polyfills
当新的 JavaScript 特性或 API 被引入时,旧版浏览器可能不支持这些特性。Polyfills 通过提供与新特性相同功能的代码,使得这些特性在旧版浏览器中也能正常工作。
npm i @babel/polyfill -D
优化polyfill
不建议直接使用import @babel/polyfill,这样做会全局引入整个polyfill包,比如array.from全局引入,不但体积大,而且还会污染全局环境。使用babel-preset-env
npm i babel-loader @babel/core @babel/preset-env -D

创建Library
自定义一个模块打包,可供使用
配置library,type可以设置为:window,commonjs,module,amd等等,可以设置为umd可满足多个type但不包括module

发布为npm-package
登录npm
npm config get registry
npm adduser输入用户名密码等
npm publish发布,其他人可以使用
使用时npm i 名字 -D
然后可以使用require引入:
