Javascript 在Visual Studio 2019中将TS编译为JS时,如何从JS文件中删除导入指令

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文件夹 最后,我

问题在于,在将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文件的外观:

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();

}