当前位置: 首页 > 知识库问答 >
问题:

javascript - vite 项目混淆加密 怎么配置?

邵昆琦
2023-05-08

vite 项目混淆加密 怎么配置?下面这样配置会报错caught TypeError: Failed to resolve module specifier "vue". Relative references must start with either "/", "./", or "../".
想要只在生产环境build添加加密,应该怎么写呢?

  build: {
    rollupOptions: {
      // 确保外部化处理那些你不想打包进库的依赖
      external: ['vue', 'jquery'],
      output: {
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          vue: 'Vue',
          jquery: '$'
        }
      },
      plugins: [
        obfuscator({
          compact: true,
          controlFlowFlattening: true,
          controlFlowFlatteningThreshold: 1,
          deadCodeInjection: true,
          deadCodeInjectionThreshold: 1,
          debugProtection: true,
          debugProtectionInterval: 0,
          disableConsoleOutput: true,
          identifierNamesGenerator: "hexadecimal",
          log: false,
          renameGlobals: false,
          rotateStringArray: true,
          selfDefending: true,
          shuffleStringArray: true,
          splitStrings: true,
          splitStringsChunkLength: 10,
          stringArray: true,
          stringArrayEncoding: ["rc4"],
          stringArrayThreshold: 1,
          transformObjectKeys: true,
          unicodeEscapeSequence: false,
        }),
      ],
    },
  },

共有1个答案

姚俊贤
2023-05-08
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import javascriptObfuscator from 'rollup-plugin-javascript-obfuscator'

// 配置
export default defineConfig(({ command }) => ({
  plugins: [
    vue(),
    command === 'build' && javascriptObfuscator({
      compact: true,
      controlFlowFlattening: true,
      controlFlowFlatteningThreshold: 1,
      deadCodeInjection: true,
      deadCodeInjectionThreshold: 1,
      debugProtection: true,
      debugProtectionInterval: 0,
      disableConsoleOutput: true,
      identifierNamesGenerator: "hexadecimal",
      log: false,
      renameGlobals: false,
      rotateStringArray: true,
      selfDefending: true,
      shuffleStringArray: true,
      splitStrings: true,
      splitStringsChunkLength: 10,
      stringArray: true,
      stringArrayEncoding: ["rc4"],
      stringArrayThreshold: 1,
      transformObjectKeys: true,
      unicodeEscapeSequence: false,
    })
  ].filter(Boolean),
  build: {
    rollupOptions: {
      external: ['vue', 'jquery'],
      output: {
        globals: {
          vue: 'Vue',
          jquery: '$'
        }
      },
    },
  },
}))
 类似资料:
  • 用Vite+vue3写一个小项目,不想数据明文出现在编译后的js文件中。 比如使用组件: 这个MyCouponent组件默认插槽会写正常的HTML标签内容。 想在Vite编译阶段加密,比如这个示例里的Hello与World这两个字符串,实现编译输出的js文件里是密文,在浏览器看的时候看明文(会要求登录后看到明文)。 尝试了一些代码混淆方案,都是只混淆代码,Hello与World还是明文。 现在需求

  • SDK已经做了相关必要混淆,开发者集成此SDK时无需再进行混淆,不当的混淆可能造成SDK功能不可用甚至崩溃。因此,请使用keep选项指定不对SDK进行混淆,具体在混淆配置文件proguard-project.txt中添加如下keep配置即可: -keep class com.baidu.mobstat.** { *; } -keep class com.baidu.bottom.** { *; }

  • 问题内容: 我正在做一个登录页面。我有UITextField作为密码。 显然,我不希望看到密码。相反,我希望键入时显示圆圈。您如何设置发生这种情况的领域? 问题答案: 请将您的UItextField属性设置为安全。 试试这个.. textFieldSecure是您的UITextField …

  • 为了保证SDK正常工作, 请务必按照以下ProGuard配置打包. -dontwarn com.hubcloud.adhubsdk.** -dontwarn android.app.** -dontwarn android.support.** -keepattributes Signature -keepattributes *Annotation* -keep class com.

  • vue3、vite项目本地运行正常,打包报一堆错,应该是type-check的报错,应该怎么解决? 无