我正在构建一个简单的ASP.NET核心应用程序,它使用npm和TypeScript。我的项目结构如下:
/ root
| wwwroot
| js
| AutoGenerated // <-- TS output goes here
| view
| index.html // <-- imports app.js from "AutoGenerated"
| scripts
| app.ts
| node_modules
| ..
| ..
| package.json
| tsconfig.json
| Startup.cs
| Program.cs
tsconfig
设置为"moduleResolution":"Node"
。所有其他的配置都是相当标准的,所以现在我不会把它包括在这里,以避免混乱的大局。
在我的app.ts
中,我想引用通过节点下载的包之一,因此我添加了以下行:
import { SomeClass } from "@module/downloadedModule";
上面的导入被解析为"/node_modules/@module/downloadedModule"
,这正是我所需要的。整个项目按照预期在/wwwroot/js/AutoGenerated/
下编译和生成一个/wwwroot/js/AutoGenerated/
文件。
问题是,生成的JS文件仍然包含对node_modules的引用:
import { SomeClass } from "@module/downloadedModule";
这是没有意义的,因为只有wwwroot
下的文件由我的应用程序提供。
我发现了一个类似的问题:模块到ASP.NET核心应用程序和作者建议扩展静态文件处理程序以便包含"node_modules",但是我不想在我的应用程序中这样做。
我脑海中浮现的潜在解决方案(虽然我不确定它们是否适用):1。将需要的文件从node_modules映射到/wwwroot/dependencies
,并在TS编译期间修改JS文件中的导入路径。2.)将我的TS文件和所需的node_modules依赖绑定到一个独立的、独立的JS文件中。3.)任何其他允许我从我的html中使用app.js并且不需要大量包的东西。
发布于 2021-02-07 18:30:02
捆绑你所有的npm包和定制模块是你最好的选择。如果要将整个node_modules目录包括在wwwroot
中,则需要提供大量文件,因此重新设置导入node_modules
是不切实际的。
如果您想要一个简单的系统,您可以在像unpkg.com这样的服务上使用npm包的CDN版本。
但是,我会推荐像Webpack或包裹这样的绑定器来完成这项工作。您可以在网上找到好的教程、文档和示例,以了解您的特定框架。Webpack要开始了是开始研究绑定配置的好地方。
https://stackoverflow.com/questions/66052156
复制相似问题