Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
80515175
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
80515175
编写于
8月 01, 2017
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Always use fileSearch to pick up tsconfig.jsons
Fixes #31822
上级
e73bb91d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
11 addition
and
64 deletion
+11
-64
extensions/typescript/src/features/taskProvider.ts
extensions/typescript/src/features/taskProvider.ts
+0
-4
extensions/typescript/src/utils/tsconfigProvider.ts
extensions/typescript/src/utils/tsconfigProvider.ts
+11
-60
未找到文件。
extensions/typescript/src/features/taskProvider.ts
浏览文件 @
80515175
...
...
@@ -42,10 +42,6 @@ class TscTaskProvider implements vscode.TaskProvider {
this
.
tsconfigProvider
=
new
TsConfigProvider
();
}
dispose
()
{
this
.
tsconfigProvider
.
dispose
();
}
public
async
provideTasks
(
token
:
vscode
.
CancellationToken
):
Promise
<
vscode
.
Task
[]
>
{
const
folders
=
vscode
.
workspace
.
workspaceFolders
;
if
(
!
folders
||
!
folders
.
length
)
{
...
...
extensions/typescript/src/utils/tsconfigProvider.ts
浏览文件 @
80515175
...
...
@@ -9,70 +9,21 @@ export interface TSConfig {
workspaceFolder
?:
vscode
.
WorkspaceFolder
;
}
const
tsconfigGlob
=
'
**/tsconfig*.json
'
;
export
default
class
TsConfigProvider
extends
vscode
.
Disposable
{
private
readonly
tsconfigs
=
new
Map
<
string
,
TSConfig
>
();
private
activated
:
boolean
=
false
;
private
disposables
:
vscode
.
Disposable
[]
=
[];
constructor
()
{
super
(()
=>
this
.
dispose
());
}
dispose
():
void
{
this
.
disposables
.
forEach
(
d
=>
d
.
dispose
());
}
export
default
class
TsConfigProvider
{
public
async
getConfigsForWorkspace
():
Promise
<
Iterable
<
TSConfig
>>
{
if
(
!
vscode
.
workspace
.
workspaceFolders
)
{
return
[];
}
await
this
.
ensureActivated
();
return
this
.
tsconfigs
.
values
();
}
private
async
ensureActivated
():
Promise
<
this
>
{
if
(
this
.
activated
)
{
return
this
;
const
configs
=
new
Map
<
string
,
TSConfig
>
();
for
(
const
config
of
await
vscode
.
workspace
.
findFiles
(
'
**/tsconfig*.json
'
,
'
**/node_modules/**
'
))
{
const
root
=
vscode
.
workspace
.
getWorkspaceFolder
(
config
);
if
(
root
)
{
configs
.
set
(
config
.
fsPath
,
{
path
:
config
.
fsPath
,
workspaceFolder
:
root
});
}
}
this
.
activated
=
true
;
await
this
.
reloadWorkspaceConfigs
();
const
configFileWatcher
=
vscode
.
workspace
.
createFileSystemWatcher
(
tsconfigGlob
);
this
.
disposables
.
push
(
configFileWatcher
);
configFileWatcher
.
onDidCreate
(
this
.
handleProjectUpdate
,
this
,
this
.
disposables
);
configFileWatcher
.
onDidChange
(
this
.
handleProjectUpdate
,
this
,
this
.
disposables
);
configFileWatcher
.
onDidDelete
(
this
.
handleProjectDelete
,
this
,
this
.
disposables
);
vscode
.
workspace
.
onDidChangeWorkspaceFolders
(()
=>
{
this
.
reloadWorkspaceConfigs
();
},
this
,
this
.
disposables
);
return
this
;
}
private
async
reloadWorkspaceConfigs
():
Promise
<
this
>
{
this
.
tsconfigs
.
clear
();
for
(
const
config
of
await
vscode
.
workspace
.
findFiles
(
tsconfigGlob
,
'
**/node_modules/**
'
))
{
this
.
handleProjectUpdate
(
config
);
}
return
this
;
}
private
handleProjectUpdate
(
config
:
vscode
.
Uri
)
{
const
root
=
vscode
.
workspace
.
getWorkspaceFolder
(
config
);
if
(
root
)
{
this
.
tsconfigs
.
set
(
config
.
fsPath
,
{
path
:
config
.
fsPath
,
workspaceFolder
:
root
});
}
}
private
handleProjectDelete
(
e
:
vscode
.
Uri
)
{
this
.
tsconfigs
.
delete
(
e
.
fsPath
);
return
configs
.
values
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录