ms-vite-plugin 1.4.52 → 1.4.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/build.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var L=Object.create;var D=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var N=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of J(e))!z.call(t,i)&&i!==n&&D(t,i,{get:()=>e[i],enumerable:!(s=x(e,i))||s.enumerable});return t};var q=(t,e,n)=>(n=t!=null?L($(t)):{},N(e||!t||!t.__esModule?D(n,"default",{value:t,enumerable:!0}):n,t));var C=exports&&exports.__createBinding||(Object.create?(function(t,e,n,s){s===void 0&&(s=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,s,i)}):(function(t,e,n,s){s===void 0&&(s=n),t[s]=e[n]})),W=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),O=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var s=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(s[s.length]=i);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var s=t(e),i=0;i<s.length;i++)s[i]!=="default"&&C(n,e,s[i]);return W(n,e),n}})(),E=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildAll=void 0;const A=E(require("archiver")),S=require("child_process"),r=O(require("fs-extra")),M=O(require("os")),o=O(require("path")),K=require("./stopGuardPlugin"),T=E(require("vite-plugin-bundle-obfuscator"));async function G(t,e){const n=(0,A.default)("zip",{zlib:{level:9}}),s=r.createWriteStream(e);return new Promise((i,c)=>{n.directory(t,!1).on("error",a=>c(a)).pipe(s),s.on("close",()=>i()),n.finalize()})}async function B(t,e){const n=[];async function s(i){const c=await r.readdir(i,{withFileTypes:!0});for(const a of c){const f=o.resolve(i,a.name);a.isDirectory()?await s(f):a.isFile()&&(/^main\.(js|ts)$/.test(a.name)||/_thread\.(js|ts)$/.test(a.name))&&n.push(o.relative(e,f))}}return await s(t),n}function R(){const t=[{cmd:o.join(M.homedir(),".KuaiJSDevloper","python","python.exe"),args:["--version"]},{cmd:o.join(M.homedir(),".KuaiJSDevloper","python","bin","python"),args:["--version"]},{cmd:"python",args:["--version"]},{cmd:"python3",args:["--version"]},{cmd:"python3.14",args:["--version"]}];for(const e of t)try{const n=(0,S.spawnSync)(e.cmd,e.args,{encoding:"utf8"}),s=(n.stdout||n.stderr||"").trim();if(s&&/Python\s+3\.14(\.\d+)?/i.test(s))return{ok:!0,path:e.cmd,version:s}}catch{}return{ok:!1}}async function H(t){async function e(n){const s=await r.readdir(n,{withFileTypes:!0});for(const i of s){const c=o.join(n,i.name);if(i.isDirectory())if(i.name==="__pycache__"){const a=await r.readdir(c,{withFileTypes:!0});for(const f of a){const _=o.join(c,f.name);if(f.isFile()&&f.name.endsWith(".cpython-314.pyc")){const v=o.dirname(c),m=f.name.replace(/\.cpython-314\.pyc$/,".pyc"),w=o.join(v,m);await r.move(_,w,{overwrite:!0})}}try{await r.remove(c)}catch{}}else await e(c);else if(i.isFile())if(i.name.endsWith(".cpython-314.pyc")){const a=c.replace(".cpython-314.pyc",".pyc");await r.move(c,a,{overwrite:!0})}else i.name.endsWith(".py")&&await r.remove(c)}}await e(t)}const I=["Minify","Weak","Medium","Strong"];async function Q(t){const e=o.join(t,"obfuscator.json");if(!await r.pathExists(e))return{enabled:!0,preset:"Medium"};try{const n=await r.readJSON(e),s=n?.enabled!==!1,i=U(n?.preset);return{enabled:s,preset:i}}catch(n){return console.error("\u274C \u65E0\u6CD5\u8BFB\u53D6 obfuscator.json"),console.error(n instanceof Error?n.message:String(n)),process.exit(1),{enabled:!0,preset:"Medium"}}}function U(t){if(typeof t!="string")return"Medium";const e=I.find(n=>n.toLowerCase()===t.trim().toLowerCase());return e||(console.warn(`\u26A0\uFE0F obfuscator.json \u7684 preset \u65E0\u6548: ${t}\uFF0C\u5DF2\u6539\u7528 Medium`),"Medium")}function V(t){return[o.join(t,"node_modules/@gamely/prometheus-cli/bin/cli.js"),o.join(t,"node_modules/ms-vite-plugin/node_modules/@gamely/prometheus-cli/bin/cli.js"),o.resolve(process.cwd(),"node_modules/@gamely/prometheus-cli/bin/cli.js")].find(n=>r.pathExistsSync(n))}const X=async(t=!0,e)=>{const n=o.join(e,"scripts"),s=await r.pathExists(o.join(n,"main.js"))||await r.pathExists(o.join(n,"main.ts")),i=await r.pathExists(o.join(n,"main.py")),c=await r.pathExists(o.join(n,"main.lua"));if(s){console.log("\u{1F680} \u5F00\u59CB\u6784\u5EFAJavaScript\u9879\u76EE...");const{build:l}=await import("vite"),u=o.join(e,"obfuscator.json");await r.pathExists(u)||(console.error("\u274C \u9519\u8BEF: \u5F53\u524D\u76EE\u5F55\u4E0D\u662F\u6709\u6548\u7684 \u5FEB\u70B9JS \u9879\u76EE"),console.error("\u8BF7\u786E\u4FDD\u76EE\u5F55\u5305\u542B\u4EE5\u4E0B\u6587\u4EF6:"),console.error(" - obfuscator.json"),process.exit(1));const h=await r.readJSON(u),b=o.join(e,t?"dist":"msbundle"),j=await B(n,n);await r.remove(b);for(const d of j)await l({root:e,build:{lib:{entry:{[o.basename(d,o.extname(d))]:`./scripts/${d}`},fileName:()=>d.replace(/\.ts$/,".js"),formats:["iife"],name:"KuaiJS"},outDir:t?"dist/scripts":"msbundle/scripts",emptyOutDir:!1,sourcemap:t,minify:!t,target:"safari15"},plugins:[(0,K.createStopGuardPlugin)(),...t?[]:[h.enabled?(0,T.default)({autoExcludeNodeModules:!0,threadPool:!0,options:{...h,target:"browser",debugProtection:!1,disableConsoleOutput:!1,domainLock:[],selfDefending:!1,renameGlobals:!1,renameProperties:!1}}):[]]]})}if(t)return;const a=o.join(e,"msbundle");if(await r.ensureDir(a),(i||c)&&await r.copy(o.join(e,"scripts"),o.join(a,"scripts")),i){const l=R();if(l.ok){console.log(`\u2705 \u68C0\u6D4B\u5230 ${l.version} (${l.path})`);const u=(0,S.spawnSync)(l.path,["-m","compileall","scripts"],{encoding:"utf8",cwd:a});u.status===0?(console.log("\u2705 \u6210\u529F\u7F16\u8BD1\u6240\u6709 Python \u6587\u4EF6"),await H(o.join(a,"scripts"))):(console.error("\u274C \u7F16\u8BD1 Python \u6587\u4EF6\u5931\u8D25"),console.error(u.stderr),process.exit(1))}else console.warn("\u26A0\uFE0F \u672A\u68C0\u6D4B\u5230 Python 3.14\uFF0C\u8BF7\u786E\u4FDD\u5728\u76EE\u6807\u8FD0\u884C\u73AF\u5883\u5B89\u88C5 Python 3.14")}else if(c){const l=await Q(e);if(!l.enabled)console.log("\u2139\uFE0F \u5DF2\u5173\u95ED Lua \u6DF7\u6DC6\uFF08obfuscator.json enabled=false\uFF09");else{const u=o.join(a,"scripts"),h=[],b=async d=>{const y=await r.readdir(d,{withFileTypes:!0});for(const p of y){const g=o.join(d,p.name);p.isDirectory()?await b(g):p.isFile()&&p.name.endsWith(".lua")&&h.push(g)}};await b(u);const j=V(e);j||(console.error("\u274C \u672A\u627E\u5230 @gamely/prometheus-cli\uFF0C\u65E0\u6CD5\u6DF7\u6DC6 Lua"),process.exit(1));for(const d of h){const y=o.relative(u,d);console.log(`\u{1F6E0}\uFE0F \u6DF7\u6DC6 Lua: ${y} (preset=${l.preset})`);const p=(0,S.spawnSync)(process.execPath,[j,y,"--preset",l.preset],{cwd:u,encoding:"utf8"});p.status!==0&&(console.error("\u274C \u6DF7\u6DC6 Lua \u5931\u8D25:",y),console.error(p.stderr||p.stdout||""),process.exit(1));const g=y.replace(/\.lua$/,".obfuscated.lua"),P=o.join(u,g);await r.pathExists(P)&&(await r.remove(d),await r.move(P,d,{overwrite:!0}))}console.log("\u2705 Lua \u6DF7\u6DC6\u5B8C\u6210")}}await r.copy(o.join(e,"res"),o.join(a,"res")),await r.copy(o.join(e,"ui"),o.join(a,"ui"));for(const l of["logo.jpg","logo.png"]){const u=o.join(e,l);await r.pathExists(u)&&await r.copy(u,o.join(a,l))}const f=o.join(e,"dist"),_=o.join(e,"package.json"),v=o.join(a,"package.json"),m=await r.readJSON(_);delete m.scripts,delete m.devDependencies,delete m.dependencies,await r.writeJSON(v,m,{spaces:2}),await r.emptyDir(f);const w=o.join(f,"ms.zip"),F=o.join(f,"ms.msbundle");await G(a,w),await r.rename(w,F),await r.remove(a)};exports.buildAll=X;
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
├─ .npmrc ← npm 配置文件
|
|
38
38
|
├─ .prettierignore ← 代码格式化忽略文件(仅js项目)
|
|
39
39
|
├─ .prettierrc.yaml ← 代码格式化配置(需安装 Prettier 插件,仅js项目)
|
|
40
|
-
├─ obfuscator.json ← 代码混淆配置(javascript-obfuscator
|
|
40
|
+
├─ obfuscator.json ← 代码混淆配置(JS:javascript-obfuscator;Lua:Prometheus,可开关和选档位)
|
|
41
41
|
├─ package.json ← 项目依赖配置文件
|
|
42
42
|
└─ tsconfig.json ← TypeScript 配置文件(用于js提示和网页提示)
|
|
43
43
|
```
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
- 打开主脚本 `main.js | main.py | main.lua`,右键编辑器,选择 `快点JS` -> `打包应用`
|
|
11
11
|
- 输入在开发者后台->网络验证管理->软件列表 中获取的 `AppId` 字段
|
|
12
|
+
- JS / Lua 项目可编辑根目录 `obfuscator.json` 决定打包时是否混淆、用哪档强度;Python 打包编译为 `.pyc`,没有该混淆配置
|
|
12
13
|
- 注意:上传到快点JS热更新服务后,可通过开发者后台->网络验证管理->软件列表的软件编号进行分发
|
|
13
14
|
- 注意:快点JS上可通过软件面板,输入软件编号进行搜索加载应用
|
|
14
15
|
|