webpack处理静态文件,如json、xml等配置文件,可以采用 copy-webpack-plugin 插件直接复制到打包后的文件夹下,但如果想采用一些手段隐藏一下这些配置文件的内容怎么办呢?

虽然对于前端来说,你的代码没有什么隐蔽性可言,但加密处理一下还是可以防止简单盗用的。

我采用的方法是利用  copy-webpack-plugin 中的 transform方法,以及CryptpJS加密库。

参考文档:

https://blog.zhengxianjun.com/2015/05/javascript-crypto-js/

https://github.com/webpack-contrib/copy-webpack-plugin

1、copy-webpack-plugin插件

查看copy-webpack-plugin的使用文档可以发现,参数中除了to和from参数外,还有一个transform参数,可以传入一个Function,第一个参数是文件内容,第二个参数文件路径

2、transform方法中加密

直接贴在webpack中的代码:

var CopyWebpackPlugin = require('copy-webpack-plugin');
var CryptoJS = require("crypto-js");/*** 对数据进行加密* @param {String} content 加密*/
function encrypt(content, path) {var str = content.toString();// 密钥 16 位var key = '0123456789abcdef';// 初始向量 initial vector 16 位var iv = '0123456789abcdef';// key 和 iv 可以一致
key = CryptoJS.enc.Utf8.parse(key);iv = CryptoJS.enc.Utf8.parse(iv);var encrypted = CryptoJS.AES.encrypt(str, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});// 转换为字符串encrypted = encrypted.toString();// mode 支持 CBC、CFB、CTR、ECB、OFB, 默认 CBC// padding 支持 Pkcs7、AnsiX923、Iso10126// 、NoPadding、ZeroPadding, 默认 Pkcs7, 即 Pkcs5return encrypted;
}module.exports = {plugins: [new CopyWebpackPlugin([{from: './jsons',to: 'jsons',transform (content, path) {return encrypt(content, path)}}])]
}

这样就把json文件中的配置加密了,

{"id": 1,"layer_name": "水利"
}// 加密后成这样了
AnTOaTIXcdgaZ2R1dmkt/r6mQHZh4/Ufgq9/PVt17q3BuKhPe5qn2tQ/9bDcIB10

3、解析

加密了之后,在浏览器运行时,还是得把从服务器down下来的加密文件解密,才能使用,可以根据自己的情况截获加密文件的请求,然后对其进行解密操作

function decrypt(content) {var key = '0123456789abcdef';var iv = '0123456789abcdef';key = Crypto.enc.Utf8.parse(key);iv = Crypto.enc.Utf8.parse(iv);// DES 解密var decrypted = Crypto.AES.decrypt(content, key, {iv: iv,mode: Crypto.mode.CBC,padding: Crypto.pad.Pkcs7});// 转换为 utf8 字符串decrypted = Crypto.enc.Utf8.stringify(decrypted);return decrypted;
}

至此,配置文件打包加密就操作完毕了!

转载于:https://www.cnblogs.com/zhang90030/p/8532876.html

用webpack打包加密静态配置文件相关推荐

  1. Webpack打包-打包详细流程

    Webpack  Webpack是一个现代化的静态模块打包器,支持JavaScript.CSS.图片等资源的打包.它将所有模块及其依赖项视为静态资源,并创建一个依赖关系图,将这些资源转换为有效的输出文 ...

  2. webpack打包缓存_【第835期】Webpack 的静态资源持久缓存

    原标题:[第835期]Webpack 的静态资源持久缓存 前言 你现在还在休假吗?早读课节前以web pack漫谈结尾,今年就以web pack开始吧.今日早读文章由众成翻译@yanni4night带 ...

  3. 16.如何做到webpack打包vue项目后,可以修改配置文件

    问题描述: 前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api ...

  4. webpack打包VUE项目读取外部配置文件,灵活配置域名

    参考方案一 作为一个兼职前端和运维的java程序员,今天我司测试人员提出了一个需求,当后台服务地址ip地址改变后,webpack打包的VUE项目得更改地址重新打包,太麻烦了,最好可以读取外部配置文件的 ...

  5. vue-cl 有一些静态资源不想经过webpack打包那么应该public 下面

    vue-cl3脚手架生成的项目,静态资源要是不想经过webpack打包,那么应该放置在public 文件夹下面,而不是以前的static文件夹下面.先说说vue-cl3 静态资源可以通过两种方式进行处 ...

  6. webpack打包配置

    在网页中会引用那些常见的静态资源? js .js .jsx .coffee .ts(Typescript 类 C#语言) css .css .less .sass .scss images .jpg ...

  7. webpack打包生成的map文件_一站式搞明白webpack中的代码分割

    上次分析到通过devtool的配置项来设置source map,在线上环境可以通过设置成cheap-module-source-map来生成单独的map文件,但是map文件在线上环境会不会每次都加载呢 ...

  8. 看看webpack打包优化

    webpack 打包策略,主要有下列几种方法. 1.CDN2.DllPlugin3.splitChunks4.happypack 下面详细介绍使用的流程. CDN 通常使用的第三方模块很大时,但是又想 ...

  9. vue 打包html静态页面,vue项目打包、vue项目打包后空白界面解决办法

    Vue脚手架提供了一个命令npm run build进行打包项目,在package.json中有一个build属性,对应执行命令node build/build.js.执行成功后,项目目录下多了一个d ...

  10. 前端工程化(ES6模块化和webpack打包)

    文章目录 目标: 目录: 1.模块化相关规范 1.1.模块化概述 1.2.浏览器端模块化规范 AMD CMD 1.3.服务器端模块化规范 CommonJS 1.4.大一统的模块化规范-ES6模块化 1 ...

最新文章

  1. Delphi 2010 新增功能之: IOUtils 单元(4): TDirectory.GetDirectories
  2. 编写python程序一年365天_编写第一个Python程序
  3. 在 C++ 中实现一个轻量的标记清除 gc 系统
  4. ssm实现发送邮件功能
  5. linux下载文件一直超时,Linux下connect超时处理(总结)
  6. Hibernate的常用API
  7. mysql 安装只有一半_记一次MySQL安装出现的坑爹问题。。。
  8. TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记
  9. pl/sql中文显示为乱码解决
  10. 张善友: .NET社区运营 | 2021 中国开发者生态峰会
  11. JavaScript(DOM编程一)
  12. Asp.NET Demo
  13. java批量查询导致堆内存不足,带有嵌套聚合的Elasticsearch查询导致内存不足
  14. jgGrid pivot reload重新加载及刷新数据
  15. LOJ2482 CEOI2017 Mousetrap 二分答案、树形DP
  16. CorelDRAW入门教程-用CDR制作漂亮小雨伞
  17. PDF不小心删掉了怎么恢复?4个方法隔壁家老王已经恢复了
  18. LIO-SLAM分析
  19. Win10正式版Guest来宾账户开启使用方法
  20. 计算机无法删除ie,ie无法删除怎么办

热门文章

  1. android147 360 程序锁
  2. oracle启动数据库错误
  3. 七张王牌助你做人做事顺遂成功
  4. 设置GRUB密码及重置密码
  5. 信用卡是超前消费的一种手段
  6. mysql控制结构_Mysql 控制结构初识
  7. 中断(二)—— x86 APIC
  8. freeswitch录音功能
  9. c++中的stl容器——map的介绍与常用用法
  10. 凸优化系列一:什么是最优化算法