我有一些文件,其中一些文件依賴於其中的某些文件。 也有cicle依賴關係。我想通過這種依賴性對這些文件進行排序,以後按照正確的順序連接文件。按NodeJS中的依賴關係對TypeScript文件進行排序
這是TypeScript文件,但我收集了一個NodeJS程序中我想對TypeScript文件進行排序的所有文件。
例(這只是隨機的名字):
我有一些文件,其中一些文件依賴於其中的某些文件。 也有cicle依賴關係。我想通過這種依賴性對這些文件進行排序,以後按照正確的順序連接文件。按NodeJS中的依賴關係對TypeScript文件進行排序
這是TypeScript文件,但我收集了一個NodeJS程序中我想對TypeScript文件進行排序的所有文件。
例(這只是隨機的名字):
感謝的是我已經知道一些事情的答案,我找到了一個正確的答案我自己,這裏是我的解決方案:
var stack = [];
var visited = [];
function topologicalSortUtil(item) {
visited.push(item.fullPath);
for (var i = 0; i <= item.dependencies.length - 1; i++) {
var dependency = item.dependencies[i];
if (visited.indexOf(dependency.fullPath) !== -1) {
continue;
}
topologicalSortUtil(dependency);
}
stack.push(item);
}
function topologicalSort(data) {
for (var i = 0; i <= data.length - 1; i++) {
var item = data[i];
if (visited.indexOf(item.fullPath) !== -1) {
continue;
}
topologicalSortUtil(item);
}
return stack;
}
參考文獻:
https://en.wikipedia.org/wiki/Topological_sorting
https://www.youtube.com/watch?v=ddTC4Zovtbc
https://github.com/mission-peace/interview/blob/master/src/com/interview/graph/TopologicalSort.java
這裏有兩個選擇,第一個基本上是「你不需要」,另一種是使用工具把矮胖混合在一起。
require
你,如果你編譯你的打字稿時使用CommonJS的爲你的模塊ARG,那麼當運行節點將加載依賴關係在運行時您可以在每個文件的頂部放置參考標記,並使用--out
CLI選項。 TSC將找出其餘的。循環依賴不會破壞TSC,但是您需要考慮到運行時可能還不存在的東西。
Shape.ts
/// <reference path="Test.ts"/>
Test.ts
/// <reference path="Vector.ts"/>
Vector.ts
/// <reference path="Group.ts"/>
/// <reference path="Shape.ts"/>
真的不推薦使用:http://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md – ahz
@andrej真正不被推薦的是使用內部模塊。我不推薦使用它們,但J. Schilling已經解釋說他/他仍然想要。 – thoughtrepo
我知道,我沒有做到這一點,但它有一個原因,我想待辦事項它由我自己。 –