将 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 文件包含到构建/输出目录而不导入的主要内容,如果未能解决你的问题,请参考以下文章