将 JSON 文件包含到构建/输出目录而不导入

Posted

技术标签:

【中文标题】将 JSON 文件包含到构建/输出目录而不导入【英文标题】:Include JSON file to build/output directory without import 【发布时间】:2017-04-12 03:57:25 【问题描述】:

也许标题有点奇怪,但我似乎在 google 上找不到任何相关内容。

问题:我有一个只包含 .ts 文件和 .json 文件的文件夹。Typescript 编译 .ts 文件并将其放入单独的目录(不是作为捆绑包,只是目录结构'原样')。

来源/

   工人 /

       [ModuleA.ts, ModuleA.json],

       [ModuleB.ts, ModuleB.json],

       [MobuleC.ts, ModuleC.json]

大多数时候我只需要 require('*.json') 并且 JSON 文件也会被放置到构建目录中。

但是现在我遇到了一种情况,导入 JSON 没有意义,因为 JSON 文件每隔几秒就会更新一次,我使用 fs.readFile('*.json') 读取文件,所以我也没有'不希望它在 v8 缓存中浮动(通过 require)

那么,我如何将 JSON/None-Typescript 文件“包含”到构建中,而不是通过 require 或 import 显式导入?


现在我只是使用 gulp 将 src 文件夹中的每个 .json 文件复制到相应的 dist/** 文件夹中。

但仍然觉得奇怪的是 typescript 没有包含任何内容..

【问题讨论】:

你每隔几秒就重建一次吗? AJAX 可能是您最好的解决方案,在这里。 不一定,它只是开发人员的构建设置。但是该项目包含 .ts 文件,可能存在也可能不存在,并且可能有也可能没有(有效的)config.json 文件。(它是一个项目,您可以在浏览器中编写打字稿模块,并将它们上传到自定义目录(.ts/.json 文件所在的位置)),并在捆绑时进行编译 我认为使用普通的 tsconfig 是不可能的。您将需要一些构建脚本来执行此操作。将这些 JSON 文件放入单独的 data 文件夹不是一种选择吗?这就是我通常做的。 src 仅包含 TypeScript 文件,lib 包含已编译的 javascript 文件,data 包含原始数据文件。根本不需要复制这些数据文件,您仍然可以通过导入和/或 readFile 直接在数据目录中访问它们。 通常在 Node.js 应用程序中需要 .json。使用TypeScript 2.9, --resolveJsonModule 允许从 .json 文件中导入、提取类型和生成。 【参考方案1】:

也许你应该检查一下--resolveJsonModule,它是打字稿的新功能。

【讨论】:

以上是关于将 JSON 文件包含到构建/输出目录而不导入的主要内容,如果未能解决你的问题,请参考以下文章

如何在构建时将其他文件包含到 C# 的输出目录中?

在 React 中访问 JSON 文件而不导入它

告诉 typescript 编译 json 文件

使用 csproj dotnetcore 将文件复制到输出目录

如何使用 webpack 从项目根目录导入外部文件?

将包含许多嵌套对象的JSON文件保存到列表中