如何用webpack打包umd模塊並測試打包結果

對於 JavaScript 的模塊而言, webpack 可以用來build 基於瀏覽器或服務端的包.

下面讓我們學習如何使用webpack生成UMD.

首先需要全局安裝webpack

npm install -g webpack

讓我們先來創建一個用來返回兩數之和的加法模塊.

// 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你的模塊.

$ 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包是否正確了.

CommonJS

在測試之前,需要確定是否安裝成功Nodejs環境,

當你使用webpack打包的程序中包含了調用Window的內容時(比如操作dom啥的),需要將commonJS轉換成瀏覽器可識別的代碼.這一步有很多方法,就我而言,我推薦你使用browserify,
它的logo賊好看,讓我有種在寫咒語的感覺.

而且也很好用,你只要在terminal下輸入 browserify 想要轉換的文件 > 生成文件,就可以生成可以在瀏覽器環境下使用的js啦.

如果你不想詳細測試,也不想裝browserify,還有一種偷懶的辦法可以不完整的測試你的代碼, 在nodejs環境下定義 global.window = {};,代碼應該也可以運行.

$ node

> var add = require('./dist/add');
> add(1, 2);

AMD

AMD模塊需要一個requirejs模塊,我這裏採用的是在cdn上引用,你也可以把它下載下來,自己引入試一下.需要注意的是,如果自己引用的話,需要注意文件路徑.

下載鏈接在這裏

AMD (中文版)

<!-- 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

這個就是最簡單的全局暴露,沒啥好說的.

<!-- 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

感謝他救我於水火之中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章