@hzzlyxx/webpack-file-tree
Advanced tools
Comparing version
@@ -1,9 +0,1 @@ | ||
declare class SourceCode { | ||
moduleAnalyser(filename: string): { | ||
filename: string; | ||
dependencies: {}; | ||
code: any; | ||
}; | ||
makeDependenciesGraph(entry: string): {}; | ||
} | ||
export default SourceCode; | ||
export { default as SourceCode } from "./sourceCode"; |
130
lib/index.js
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.SourceCode = void 0; | ||
/* | ||
* @Author: hzzly | ||
* @Date: 2021-09-08 17:24:09 | ||
* @Date: 2021-09-09 09:59:06 | ||
* @LastEditors: hzzly | ||
* @LastEditTime: 2021-09-09 09:49:31 | ||
* @LastEditTime: 2021-09-09 09:59:06 | ||
* @Copyright: hzzly(hjingren@aliyun.com) | ||
* @Description: description | ||
*/ | ||
var fs = require("fs"); | ||
var parser = require("@babel/parser"); | ||
var traverse = require("@babel/traverse"); | ||
var generator = require("@babel/generator"); | ||
var path = require("path"); | ||
// const moduleAnalyser = (filename: string) => { | ||
// if (fs.lstatSync(filename).isDirectory()) { | ||
// filename = `${filename}/index.ts`; | ||
// } | ||
// const content = fs.readFileSync(filename, "utf-8"); // 读取文件内容 | ||
// const ast = parser.parse(content, { | ||
// sourceType: "module", | ||
// }); | ||
// const dependencies = {}; | ||
// traverse.default(ast, { | ||
// ImportDeclaration({ node }) { | ||
// // console.log(node); | ||
// const dirname = path.dirname(filename); //filename对应的文件夹路径 | ||
// const newFile = "./" + path.join(dirname, node.source.value); | ||
// console.log(node.source.value, newFile); | ||
// if (node.source.value?.includes("./")) { | ||
// dependencies[node.source.value] = newFile; | ||
// } | ||
// }, | ||
// }); | ||
// // const { code } = babel.transformFromAst(ast, null, { | ||
// // // presets: ["@babel/preset-env"], | ||
// // }); //转换ast | ||
// const { code } = generator.default(ast, {}, content); | ||
// return { | ||
// filename, | ||
// dependencies, | ||
// code, | ||
// }; | ||
// }; | ||
// // const moduleInfo = moduleAnalyser("./test1/index.ts"); // 入口函数 | ||
// // console.log(moduleInfo); | ||
// const makeDependenciesGraph = (entry: string) => { | ||
// const entryModule = moduleAnalyser(entry); | ||
// const graphArray = [entryModule]; | ||
// for (let i = 0; i < graphArray.length; i++) { | ||
// const item = graphArray[i]; | ||
// const { dependencies } = item; // 解构出依赖 | ||
// if (dependencies) { | ||
// for (let j in dependencies) { | ||
// // 递归分析依赖,放入依赖图谱数组 | ||
// graphArray.push(moduleAnalyser(dependencies[j])); | ||
// } | ||
// } | ||
// } | ||
// // 转换为对象 便于使用 | ||
// const graph = {}; | ||
// graphArray.forEach((item) => { | ||
// graph[item.filename] = { | ||
// dependencies: item.dependencies, | ||
// code: item.code, | ||
// }; | ||
// }); | ||
// return graph; | ||
// }; | ||
// const graph = makeDependenciesGraph("../example/index.ts"); | ||
// console.log(graph); | ||
var SourceCode = /** @class */ (function () { | ||
function SourceCode() { | ||
} | ||
SourceCode.prototype.moduleAnalyser = function (filename) { | ||
if (fs.lstatSync(filename).isDirectory()) { | ||
filename = filename + "/index.ts"; | ||
} | ||
var content = fs.readFileSync(filename, "utf-8"); // 读取文件内容 | ||
var ast = parser.parse(content, { | ||
sourceType: "module", | ||
}); | ||
var dependencies = {}; | ||
traverse.default(ast, { | ||
ImportDeclaration: function (_a) { | ||
var _b; | ||
var node = _a.node; | ||
// console.log(node); | ||
var dirname = path.dirname(filename); //filename对应的文件夹路径 | ||
var newFile = "./" + path.join(dirname, node.source.value); | ||
console.log(node.source.value, newFile); | ||
if ((_b = node.source.value) === null || _b === void 0 ? void 0 : _b.includes("./")) { | ||
dependencies[node.source.value] = newFile; | ||
} | ||
}, | ||
}); | ||
// const { code } = babel.transformFromAst(ast, null, { | ||
// // presets: ["@babel/preset-env"], | ||
// }); //转换ast | ||
var code = generator.default(ast, {}, content).code; | ||
return { | ||
filename: filename, | ||
dependencies: dependencies, | ||
code: code, | ||
}; | ||
}; | ||
SourceCode.prototype.makeDependenciesGraph = function (entry) { | ||
var entryModule = this.moduleAnalyser(entry); | ||
var graphArray = [entryModule]; | ||
for (var i = 0; i < graphArray.length; i++) { | ||
var item = graphArray[i]; | ||
var dependencies = item.dependencies; // 解构出依赖 | ||
if (dependencies) { | ||
for (var j in dependencies) { | ||
// 递归分析依赖,放入依赖图谱数组 | ||
graphArray.push(this.moduleAnalyser(dependencies[j])); | ||
} | ||
} | ||
} | ||
// 转换为对象 便于使用 | ||
var graph = {}; | ||
graphArray.forEach(function (item) { | ||
graph[item.filename] = { | ||
dependencies: item.dependencies, | ||
code: item.code, | ||
}; | ||
}); | ||
return graph; | ||
}; | ||
return SourceCode; | ||
}()); | ||
exports.default = SourceCode; | ||
var sourceCode_1 = require("./sourceCode"); | ||
Object.defineProperty(exports, "SourceCode", { enumerable: true, get: function () { return sourceCode_1.default; } }); |
{ | ||
"name": "@hzzlyxx/webpack-file-tree", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "webpack source code", | ||
@@ -5,0 +5,0 @@ "author": "hzzly <hjingren@aliyun.com>", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
6460
8.57%6
50%156
9.86%1
Infinity%