├── lib ├── inject-code-template.d.ts ├── server.d.ts ├── get-inject-code.d.ts ├── index.d.ts ├── constant.d.ts ├── constant.js.map ├── constant.js ├── get-inject-code.js.map ├── index.js.map ├── server.js.map ├── cover.css ├── get-inject-code.js ├── server.js ├── index.js ├── inject-code-template.js.map ├── inject-code-template.js └── launch-editor.js ├── .gitignore ├── README.md ├── src ├── constant.ts ├── get-inject-code.ts ├── server.ts ├── index.ts ├── cover.css ├── inject-code-template.ts └── launch-editor.js ├── package.json ├── tsconfig.json └── yarn.lock /lib/inject-code-template.d.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn-error.log -------------------------------------------------------------------------------- /lib/server.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: (callback: Function) => void; 2 | export = _default; 3 | -------------------------------------------------------------------------------- /lib/get-inject-code.d.ts: -------------------------------------------------------------------------------- 1 | declare const injectCode: (port: any) => string; 2 | export = injectCode; 3 | -------------------------------------------------------------------------------- /lib/index.d.ts: -------------------------------------------------------------------------------- 1 | declare class TrackCodePlugin { 2 | apply(complier: any): void; 3 | } 4 | export = TrackCodePlugin; 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vnode-plugin 2 | 3 | 该 plugin 的功能已经迁移至 [webpack-vue-debug](https://github.com/zh-lx/webpack-vue-debug),此仓库不再维护,请使用 [webpack-vue-debug](https://github.com/zh-lx/webpack-vue-debug) 4 | 5 | -------------------------------------------------------------------------------- /lib/constant.d.ts: -------------------------------------------------------------------------------- 1 | export declare const InjectLineName = "_vc-row"; 2 | export declare const InjectColumnName = "_vc-col"; 3 | export declare const InjectPathName = "_vc-path"; 4 | export declare const InjectCoverName = "_vc-cover"; 5 | export declare const InjectCoverInfoName = "_vc-cover-info"; 6 | export declare const InjectNodeName = "_vc-node"; 7 | -------------------------------------------------------------------------------- /src/constant.ts: -------------------------------------------------------------------------------- 1 | export const InjectLineName = '_vc-row'; // 注入的行名称 2 | export const InjectColumnName = '_vc-col'; // 注入的列名称 3 | export const InjectPathName = '_vc-path'; // 注入的路径名称 4 | export const InjectCoverName = '_vc-cover'; // 遮罩层id 5 | export const InjectCoverInfoName = '_vc-cover-info'; // 遮罩层id 6 | export const InjectNodeName = '_vc-node'; // 注入的节点名称 7 | -------------------------------------------------------------------------------- /lib/constant.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,SAAS,CAAC,CAAC,SAAS;AACrC,QAAA,gBAAgB,GAAG,SAAS,CAAC,CAAC,SAAS;AACvC,QAAA,cAAc,GAAG,UAAU,CAAC,CAAC,UAAU;AACvC,QAAA,eAAe,GAAG,WAAW,CAAC,CAAC,QAAQ;AACvC,QAAA,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,QAAQ;AAChD,QAAA,cAAc,GAAG,UAAU,CAAC,CAAC,UAAU"} -------------------------------------------------------------------------------- /lib/constant.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.InjectNodeName = exports.InjectCoverInfoName = exports.InjectCoverName = exports.InjectPathName = exports.InjectColumnName = exports.InjectLineName = void 0; 4 | exports.InjectLineName = '_vc-row'; // 注入的行名称 5 | exports.InjectColumnName = '_vc-col'; // 注入的列名称 6 | exports.InjectPathName = '_vc-path'; // 注入的路径名称 7 | exports.InjectCoverName = '_vc-cover'; // 遮罩层id 8 | exports.InjectCoverInfoName = '_vc-cover-info'; // 遮罩层id 9 | exports.InjectNodeName = '_vc-node'; // 注入的节点名称 10 | //# sourceMappingURL=constant.js.map -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vnode-plugin", 3 | "version": "1.0.2", 4 | "main": "./lib/index.js", 5 | "repository": "git@github.com:zh-lx/vnode-plugin.git", 6 | "author": "zh-lx <18366276315@163.com>", 7 | "license": "MIT", 8 | "dependencies": { 9 | "chalk": "^4.1.1", 10 | "html-webpack-plugin": "^5.5.0", 11 | "portfinder": "^1.0.28", 12 | "shell-quote": "^1.7.2", 13 | "webpack": "^5.43.0" 14 | }, 15 | "devDependencies": { 16 | "@types/node": "^16.0.1" 17 | }, 18 | "scripts": { 19 | "build": "rm -rf lib && tsc && cp -r ./src/launch-editor.js ./lib && cp -r ./src/cover.css ./lib" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["es6", "dom"], 4 | "sourceMap": true, 5 | "noImplicitReturns": true, 6 | "noImplicitThis": true, 7 | "noImplicitAny": false, 8 | "module": "commonjs", 9 | "target": "es5", 10 | "strictNullChecks": false, 11 | "suppressImplicitAnyIndexErrors": false, 12 | "jsx": "react", 13 | "moduleResolution": "node", 14 | "experimentalDecorators": true, 15 | "allowSyntheticDefaultImports": true, 16 | "esModuleInterop": true, 17 | "allowJs": false, 18 | "skipLibCheck": true, 19 | "skipDefaultLibCheck": true, 20 | "noUnusedLocals": false, 21 | "resolveJsonModule": true, 22 | "baseUrl": "./", 23 | "outDir": "lib", 24 | "declaration": true 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/get-inject-code.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"get-inject-code.js","sourceRoot":"","sources":["../src/get-inject-code.ts"],"names":[],"mappings":";;;;AAAA,8CAAwB;AACxB,0CAAoB;AACpB,uCAOoB;AACpB,IAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC,CAAC,eAAe;AACpF,IAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACzD,IAAM,MAAM,GAAG,YAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,IAAM,SAAS,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEtD,IAAM,UAAU,GAAG,UAAC,IAAI;IACtB,IAAM,IAAI,GAAG,MAAM;SAChB,OAAO,CAAC,WAAW,EAAE,yBAAc,CAAC;SACpC,OAAO,CAAC,WAAW,EAAE,yBAAc,CAAC;SACpC,OAAO,CAAC,aAAa,EAAE,2BAAgB,CAAC;SACxC,OAAO,CAAC,WAAW,EAAE,yBAAc,CAAC;SACpC,OAAO,CAAC,YAAY,EAAE,0BAAe,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,8BAAmB,CAAC;SAC9C,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAE9B,OAAO,4JAAgJ,SAAS,4BAAuB,IAAI,gBAAa,CAAC;AAC3M,CAAC,CAAC;AAEF,iBAAS,UAAU,CAAC"} -------------------------------------------------------------------------------- /lib/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAoD;AACpD,oDAAmC;AACnC,sEAA2C;AAC3C;IAAA;IA+BA,CAAC;IA9BC,+BAAK,GAAL,UAAM,QAAQ;QACZ,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAC,WAAW;YAC5D,gBAAW,CAAC,UAAC,IAAI;gBACf,IAAM,IAAI,GAAG,yBAAU,CAAC,IAAI,CAAC,CAAC;gBAC9B,SAAS;gBACT,IAAI,WAAW,CAAC,KAAK,CAAC,oCAAoC,EAAE;oBAC1D,WAAW,CAAC,KAAK,CAAC,oCAAoC,CAAC,GAAG,CACxD,mBAAmB,EACnB,UAAC,IAAI;wBACH,iCAAiC;wBACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAK,IAAI,cAAW,CAAC,CAAC;oBAC/D,CAAC,CACF,CAAC;iBACH;gBACD,UAAU;gBACV,6BAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,QAAQ,CACzD,iBAAiB,EACjB,UAAC,IAAI,EAAE,EAAE;oBACP,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC7B,SAAS;wBACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAK,IAAI,cAAW,CAAC,CAAC;wBAC7D,0BAA0B;wBAC1B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBAChB;gBACH,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,sBAAC;AAAD,CAAC,AA/BD,IA+BC;AAED,iBAAS,eAAe,CAAC"} -------------------------------------------------------------------------------- /lib/server.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;AAAA,qBAAqB;AACrB,8CAAwB;AACxB,0DAAoC;AACpC,kEAA2C;AAE3C,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,iBAAS,SAAS,WAAW,CAAC,QAAkB;IAC9C,IAAI,OAAO,EAAE;QACX,OAAO;KACR;IACD,OAAO,GAAG,IAAI,CAAC;IACf,IAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,UAAC,GAAG,EAAE,GAAG;QACxC,eAAe;QACf,IAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,6BAA6B,EAAE,GAAG;YAClC,8BAA8B,EAAE,GAAG;YACnC,8BAA8B,EAC5B,0EAA0E;SAC7E,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACd,uBAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,SAAS;IACT,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAC,GAAU,EAAE,IAAY;QAC1D,IAAI,GAAG,EAAE;YACP,MAAM,GAAG,CAAC;SACX;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"} -------------------------------------------------------------------------------- /src/get-inject-code.ts: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import fs from 'fs'; 3 | import { 4 | InjectPathName, 5 | InjectLineName, 6 | InjectColumnName, 7 | InjectCoverName, 8 | InjectNodeName, 9 | InjectCoverInfoName, 10 | } from './constant'; 11 | const jsFile = path.resolve(__dirname, './inject-code-template.js'); // 编译后会在lib文件夹中 12 | const styleFile = path.resolve(__dirname, './cover.css'); 13 | const jsCode = fs.readFileSync(jsFile, 'utf-8'); 14 | const styleCode = fs.readFileSync(styleFile, 'utf-8'); 15 | 16 | const injectCode = (port) => { 17 | const code = jsCode 18 | .replace(/__FILE__/g, InjectPathName) 19 | .replace(/__LINE__/g, InjectLineName) 20 | .replace(/__COLUMN__/g, InjectColumnName) 21 | .replace(/__NODE__/g, InjectNodeName) 22 | .replace(/__COVER__/g, InjectCoverName) 23 | .replace(/__COVERINFO__/g, InjectCoverInfoName) 24 | .replace(/__PORT__/g, port); 25 | 26 | return `