webpack打包三方库直接在html里面使用

10,888次阅读
没有评论

共计 1928 个字符,预计需要花费 5 分钟才能阅读完成。

目录

场景

webpack 配置

拓展

1

2

拓展 HtmlWebpackPlugin


场景

我在小程序中使用 wxmp-rsa 库进行加密,需要在 html 里进行解密。我就想把 wxmp-rsa 库打包到一个 js 里面,然后把 html 和 js 一起放到服务器,html 再相对路径引入 js 文件。

webpack 配置

const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  devServer: {
    // 配置服务端口号
    port: 6010,
    // 打开热更新开关
    hot: true,
    // 服务器的 IP 地址,可以使用 IP 也可以使用 localhost
    host: "localhost",
    // 服务端压缩是否开启
    compress: true,
    // 打开浏览器
    open: true,
  },
  // JavaScript 执行入口文件
  entry: "./node_modules/wxmp-rsa/dist/index.js",
  output: {
    // 把所有依赖的模块合并输出到一个 bundle.js 文件
    // filename: "bundle.js",
    // 把输出文件都放到 dist 目录下
    path: path.resolve(__dirname, "./dist"),
    library: "JSEncrypt",
    libraryTarget: "umd",
    libraryExport: "default",
    globalObject: "window",
    filename: "jsencrypt.js",
  },
  // experiments: {outputModule: true},
  module: {
    rules: [
      {
        // 用正则去匹配要用该 loader 转换的 CSS 文件
        test: /.css$/,
        use: [
          "style-loader",
          // MiniCssExtractPlugin.loader,
          {loader: "css-loader",},
        ],
      },
    ],
  },
  optimization: {minimizer: [new CssMinimizerPlugin()],
    minimize: true,
  },

  plugins: [
    new HtmlWebpackPlugin({
      template: "./src/index.ejs",
      scriptLoading: "blocking",
    }),
  ],
};

最主要配置

library: “JSEncrypt”

输出一个库,为你的入口做导出。也就是可以直接在页面使用的变量名

libraryTarget: “umd”

将你的 library 暴露为 AMD 模块

libraryExport: “default”

指定哪一个导出应该被暴露为一个库。默认为 undefined,将会导出整个(命名空间)对象

globalObject: “window”

当输出为 library 时,尤其是当 libraryTarget 为 'umd' 时,此选项将决定使用哪个全局对象来挂载 library

如果不设置 libraryExport: “default”,那么打包后使用时候就需要 JSEncrypt.default

比如 const rsa=new  JSEncrypt.default()

如果设置了 libraryExport: “default”,那么就可以直接使用 const rsa=new  JSEncrypt()

拓展

1

其实可以直接使用 cnd 方式引入 

这是因为 wxmp-rsa 就是根据 jsencrypt 封装的,所以可以直接使用 jsencrypt 进行解密。

2

网上查了老白半天也没找到正确打包姿势,然后拉 jsencrypt 源码发现人家的 webpack 配置才明白。

拓展 HtmlWebpackPlugin

new HtmlWebpackPlugin({
      template: "./src/index.ejs",
      scriptLoading: "blocking",
}),
scriptLoading 加载方式 引入 js 方式
blocking 生成的 html 引入的 js 为同步加载
defer 生成 html 引入的 js 为非阻塞加载(默认值为 defer)
module 生成 html 引入的 js 为非阻塞加载

项目中一般使用 blocking 方式引入打包好的 js。

  推广一下自己开发的微信小程序,有兴趣的朋友可以玩一玩

webpack 打包三方库直接在 html 里面使用

原文地址: webpack 打包三方库直接在 html 里面使用

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-03发表,共计1928字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)