对于 JavaScript 的模块而言, webpack 能够用来build 基于浏览器或服务端的包.html
下面让咱们学习如何使用webpack生成UMD.node
首先须要全局安装webpackwebpack
npm install -g webpack
git
让咱们先来建立一个用来返回两数之和的加法模块.github
// add.js module.exports = function add(a, b) { return a + b; }; 接下来,咱们来创建webpack配置 // webpack.config.js module.exports = { entry: './add.js', output: { filename: './dist/add.js', // export to AMD, CommonJS, or window libraryTarget: 'umd', // the name exported to window library: 'add' } };
接下来使用webpack来build你的模块.web
$ webpack Hash: 87657f97293582af3ac3 Version: webpack 4.29.3 Time: 435ms Built at: 02/22/2019 9:01:57 AM Asset Size Chunks Chunk Names ./add.js 1.17 KiB 0 [emitted] main Entrypoint main = ./add.js [0] ./add.js 83 bytes {0} [built
如今你能够来使用CommonJS, AMD, script tag这三种不一样的方式来测试你的UMD包是否正确了.ajax
在测试以前,须要肯定是否安装成功Nodejs环境,npm
当你使用webpack打包的程序中包含了调用Window的内容时(好比操做dom啥的),须要将commonJS转换成浏览器可识别的代码.这一步有不少方法,就我而言,我推荐你使用browserify,
它的logo贼好看,让我有种在写咒语的感受.api
并且也很好用,你只要在terminal下输入 browserify 想要转换的文件 > 生成文件
,就能够生成能够在浏览器环境下使用的js啦.浏览器
若是你不想详细测试,也不想装browserify,还有一种偷懒的办法能够不完整的测试你的代码, 在nodejs环境下定义 global.window = {};
,代码应该也能够运行.
$ node
> var add = require('./dist/add'); > add(1, 2);
AMD模块须要一个requirejs模块,我这里采用的是在cdn上引用,你也能够把它下载下来,本身引入试一下.须要注意的是,若是本身引用的话,须要注意文件路径.
下载连接在这里
<!-- amd.html --> <html> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js"></script> <script> window.requirejs(['dist/add'], function(add) { console.log(add(1, 2)); }); </script> </body> </html>
这个就是最简单的全局暴露,没啥好说的.
<!-- script-tag.html --> <html> <body> <script src="./dist/add.js"></script> <script> console.log(window.add(1, 2)); </script> </body> </html>
本文参考了Build to UMD with webpack@1
感谢他救我于水火之中