Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4284a8ff
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,发现更多精彩内容 >>
提交
4284a8ff
编写于
6月 13, 2019
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use --json
上级
8cbd7355
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
44 addition
and
54 deletion
+44
-54
extensions/npm/src/features/packageJSONContribution.ts
extensions/npm/src/features/packageJSONContribution.ts
+44
-54
未找到文件。
extensions/npm/src/features/packageJSONContribution.ts
浏览文件 @
4284a8ff
...
...
@@ -231,32 +231,28 @@ export class PackageJSONContribution implements IJSONContribution {
const
currentKey
=
location
.
path
[
location
.
path
.
length
-
1
];
if
(
typeof
currentKey
===
'
string
'
)
{
return
this
.
npmView
(
currentKey
).
then
(
info
=>
{
try
{
const
latest
=
info
&&
info
[
'
dist-tags.latest
'
];
if
(
latest
)
{
let
name
=
JSON
.
stringify
(
latest
);
let
proposal
=
new
CompletionItem
(
name
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
proposal
.
insertText
=
name
;
proposal
.
documentation
=
localize
(
'
json.npm.latestversion
'
,
'
The currently latest version of the package
'
);
result
.
add
(
proposal
);
const
latest
=
info
.
distTagsLatest
;
if
(
latest
)
{
let
name
=
JSON
.
stringify
(
latest
);
let
proposal
=
new
CompletionItem
(
name
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
proposal
.
insertText
=
name
;
proposal
.
documentation
=
localize
(
'
json.npm.latestversion
'
,
'
The currently latest version of the package
'
);
result
.
add
(
proposal
);
name
=
JSON
.
stringify
(
'
^
'
+
latest
);
proposal
=
new
CompletionItem
(
name
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
proposal
.
insertText
=
name
;
proposal
.
documentation
=
localize
(
'
json.npm.majorversion
'
,
'
Matches the most recent major version (1.x.x)
'
);
result
.
add
(
proposal
);
name
=
JSON
.
stringify
(
'
^
'
+
latest
);
proposal
=
new
CompletionItem
(
name
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
proposal
.
insertText
=
name
;
proposal
.
documentation
=
localize
(
'
json.npm.majorversion
'
,
'
Matches the most recent major version (1.x.x)
'
);
result
.
add
(
proposal
);
name
=
JSON
.
stringify
(
'
~
'
+
latest
);
proposal
=
new
CompletionItem
(
name
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
proposal
.
insertText
=
name
;
proposal
.
documentation
=
localize
(
'
json.npm.minorversion
'
,
'
Matches the most recent minor version (1.2.x)
'
);
result
.
add
(
proposal
);
}
}
catch
(
e
)
{
// ignore
name
=
JSON
.
stringify
(
'
~
'
+
latest
);
proposal
=
new
CompletionItem
(
name
);
proposal
.
kind
=
CompletionItemKind
.
Property
;
proposal
.
insertText
=
name
;
proposal
.
documentation
=
localize
(
'
json.npm.minorversion
'
,
'
Matches the most recent minor version (1.2.x)
'
);
result
.
add
(
proposal
);
}
return
0
;
},
()
=>
{
...
...
@@ -284,42 +280,30 @@ export class PackageJSONContribution implements IJSONContribution {
}
private
getInfo
(
pack
:
string
):
Thenable
<
string
[]
>
{
return
new
Promise
((
resolve
)
=>
{
return
this
.
npmView
(
pack
).
then
(
info
=>
{
const
result
:
string
[]
=
[];
result
.
push
(
info
.
description
||
''
);
result
.
push
(
info
[
'
dist-tags.latest
'
]
?
localize
(
'
json.npm.version.hover
'
,
'
Latest version: {0}
'
,
info
[
'
dist-tags.latest
'
])
:
''
);
result
.
push
(
info
.
homepage
||
''
);
return
resolve
(
result
);
}).
catch
(()
=>
{
return
resolve
([]);
});
return
this
.
npmView
(
pack
).
then
(
info
=>
{
const
result
:
string
[]
=
[];
result
.
push
(
info
.
description
||
''
);
result
.
push
(
info
.
distTagsLatest
?
localize
(
'
json.npm.version.hover
'
,
'
Latest version: {0}
'
,
info
.
distTagsLatest
)
:
''
);
result
.
push
(
info
.
homepage
||
''
);
return
result
;
},
()
=>
{
return
[];
});
}
private
npmView
(
pack
:
string
):
Promise
<
any
>
{
return
new
Promise
((
resolve
)
=>
{
const
command
=
'
npm view
'
+
pack
+
'
description dist-tags.latest homepage
'
;
private
npmView
(
pack
:
string
):
Promise
<
PackageInfo
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
command
=
'
npm view
--json
'
+
pack
+
'
description dist-tags.latest homepage
'
;
cp
.
exec
(
command
,
(
error
,
stdout
)
=>
{
if
(
error
)
{
return
resolve
();
}
const
lines
=
stdout
.
split
(
'
\n
'
);
if
(
lines
.
length
)
{
const
info
:
any
=
{};
lines
.
forEach
((
line
)
=>
{
const
nameval
=
line
.
split
(
'
=
'
);
if
(
nameval
.
length
===
2
)
{
/* tslint:disable:no-unexternalized-strings */
const
fq
=
nameval
[
1
].
indexOf
(
"
'
"
);
const
lq
=
nameval
[
1
].
lastIndexOf
(
"
'
"
);
const
val
=
nameval
[
1
].
slice
(
fq
+
1
,
lq
).
replace
(
"
\
'
"
,
"
'
"
);
/* tslint:enable:no-unexternalized-strings */
info
[
nameval
[
0
]]
=
val
;
}
});
return
resolve
(
info
);
return
reject
();
}
const
content
=
JSON
.
parse
(
stdout
);
resolve
({
description
:
content
[
'
description
'
],
distTagsLatest
:
content
[
'
dist-tags.latest
'
],
homepage
:
content
[
'
homepage
'
]
});
});
});
}
...
...
@@ -339,3 +323,9 @@ export class PackageJSONContribution implements IJSONContribution {
return
null
;
}
}
interface
PackageInfo
{
description
:
string
;
distTagsLatest
?:
string
;
homepage
?:
string
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录