Javascript 在Visual Studio 2019中将TS编译为JS时,如何从JS文件中删除导入指令
问题在于,在将TS编译为JS时,如何自动从JavaScript文件中删除导入指令,或者如何在VisualStudio2019中为我提供一个解决方案来组织从npm下载的包的工作 我正在Visual Studio 2019中开发web应用程序,使用ASP.NET核心和MSBuild将TS编译为JS。我创建一个TypeScript文件,将两个npm包导入其中:jQuery和Axios,然后将TS编译为JS,并通过Gulp任务管理器将库从node_modules文件夹复制到wwwroot文件夹 最后,我有四个文件:htmldom.ts(一个TypeScript源代码,包含使用jQuery和Axios的代码);已编译的htmldom.js;以及npm存储库中的库(jquery.js和axios.js) 这就是TS文件的外观:Javascript 在Visual Studio 2019中将TS编译为JS时,如何从JS文件中删除导入指令,javascript,typescript,asp.net-core,visual-studio-2019,Javascript,Typescript,Asp.net Core,Visual Studio 2019,问题在于,在将TS编译为JS时,如何自动从JavaScript文件中删除导入指令,或者如何在VisualStudio2019中为我提供一个解决方案来组织从npm下载的包的工作 我正在Visual Studio 2019中开发web应用程序,使用ASP.NET核心和MSBuild将TS编译为JS。我创建一个TypeScript文件,将两个npm包导入其中:jQuery和Axios,然后将TS编译为JS,并通过Gulp任务管理器将库从node_modules文件夹复制到wwwroot文件夹 最后,我
import "../node_modules/jquery/dist/jquery.js";
import "../node_modules/@types/jquery/index";
import axios from "../node_modules/axios/index"
document.addEventListener("DOMContentLoaded", function () {
const button = document.getElementById('button');
button.addEventListener('click', function () {
$("#button").on("click", function () {
alert("hello jquery!!!");
});
var url = "https://jsonplaceholder.typicode.com/todos";
var data = axios.get(url).then(function (responce) {
console.log(responce.data);
});
console.log(data);
});
});
import "../node_modules/jquery/dist/jquery.js";
import "../node_modules/@types/jquery/index";
import axios from "../node_modules/axios/index";
document.addEventListener("DOMContentLoaded", function () {
const button = document.getElementById('button');
button.addEventListener('click', function () {
$("#button").on("click", function () {
alert("hello jquery!!!");
});
var url = "https://jsonplaceholder.typicode.com/todos";
var data = axios.get(url).then(function (responce) {
console.log(responce.data);
});
console.log(data);
});
});
//# sourceMappingURL=htmldom.js.map
以下是编译后的JS文件的外观:
import "../node_modules/jquery/dist/jquery.js";
import "../node_modules/@types/jquery/index";
import axios from "../node_modules/axios/index"
document.addEventListener("DOMContentLoaded", function () {
const button = document.getElementById('button');
button.addEventListener('click', function () {
$("#button").on("click", function () {
alert("hello jquery!!!");
});
var url = "https://jsonplaceholder.typicode.com/todos";
var data = axios.get(url).then(function (responce) {
console.log(responce.data);
});
console.log(data);
});
});
import "../node_modules/jquery/dist/jquery.js";
import "../node_modules/@types/jquery/index";
import axios from "../node_modules/axios/index";
document.addEventListener("DOMContentLoaded", function () {
const button = document.getElementById('button');
button.addEventListener('click', function () {
$("#button").on("click", function () {
alert("hello jquery!!!");
});
var url = "https://jsonplaceholder.typicode.com/todos";
var data = axios.get(url).then(function (responce) {
console.log(responce.data);
});
console.log(data);
});
});
//# sourceMappingURL=htmldom.js.map
这就是MVC视图与库的关系:
<input type="button" id="button" value="click me" />
@section Scripts
{
<script src="~/javascripts/jquery.js" asp-append-version="true"></script>
<script src="~/javascripts/axios.js" asp-append-version="true"></script>
<script src="~/compiled/htmldom.js" asp-append-version="true"></script>
}
问题是如何在将TS编译为JS时自动从JavaScript文件中删除导入指令,或建议我如何在Visual Studio 2019中使用TypeScript使用第三方库解决了,我编写了一个删除导入指令的扩展
public static class ApplicationBuilderExtension
{
public static IApplicationBuilder UseRemoveImport(this IApplicationBuilder app, IHostingEnvironment env)
{
var path = env.WebRootPath + "/assets/compiled";
foreach (string file in Directory.EnumerateFiles(path, "*.js"))
{
var contents = File.ReadAllLines(file);
var allExceptImport = contents.Where(l => !l.StartsWith("import"));
File.WriteAllLines(file, allExceptImport);
}
return app;
}
}
然后在启动阶段
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseRemoveImport(env);
app.UseStaticFiles();
}
解决了这个问题,我编写了一个删除导入指令的扩展
public static class ApplicationBuilderExtension
{
public static IApplicationBuilder UseRemoveImport(this IApplicationBuilder app, IHostingEnvironment env)
{
var path = env.WebRootPath + "/assets/compiled";
foreach (string file in Directory.EnumerateFiles(path, "*.js"))
{
var contents = File.ReadAllLines(file);
var allExceptImport = contents.Where(l => !l.StartsWith("import"));
File.WriteAllLines(file, allExceptImport);
}
return app;
}
}
然后在启动阶段
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseRemoveImport(env);
app.UseStaticFiles();
}