webpack之打包library
- library: “obj”, libraryTarget: “var” 声明了一个全局变量obj
- library: “obj”, libraryTarget: “commonjs” 顾名思义,不多解释
- library: “obj”, libraryTarget: “amd” 顾名思义,不多解释
- library: “obj”, libraryTarget: “umd” 顾名思义,不多解释
Library : [ˈlaɪbrəri] 图书馆,软件库
打包的文件:
output.libraryTarget 属性表示以何种形式导出 JavaScript 模块。Webpack 在打包过程中会使用类 Node.js 的模块方式来构建项目,其中 libraryTarget 的值可以制定在服务器环境中如何使用这些模块。
常见的 output.libraryTarget 取值包括:
- var: 把模块作为一个变量(变量名由 output.library 设置)放入全局对象上,在浏览器端使用时需要先加载该模块并引用相关变量。
- commonjs: 以 CommonJS 模块定义方式导出,使这些模块可以在 Node.js 中被引用。
- commonjs2: 和 commonjs 类似,但是会通过 module.exports 导出所有内容,适用于多个 CommonJS require 对同一个库进行重复调用的情况。
- umd: 通用的模块定义方式,支持将模块以多种方式导出。可在 AMD、CommonJS 规范下直接使用,同时可直接导出到全局变量下,方法名通过输出的全局变量名称指定。
- this: 将模块挂载到 this 上,在浏览器端使用时不需要先进行模块加载。
- window: 跟 var 或 global 类似,就是把模块挂在 window 下面。
可以根据需要选择合适的 libraryTarget,也可以通过 output.library 更改模块导出的名称,从而实现可控的模块导出。