【发布时间】:2019-07-17 03:03:59
【问题描述】:
我有一个使用 package.json 文件的 TypeScript React 组件(参见屏幕截图),我运行 tsc 以便将其转换为我的 dist 文件夹中的 es5,但 package.json 文件没有被复制.请注意,在屏幕截图中,我手动将其复制到了dist 文件夹中。
所以我的问题是:有没有办法通过tsc/tsconfig 做到这一点......而无需添加复制脚本(通过yarn build 运行)。因为我希望在运行 tsc --watch
我也不希望在组件文件夹中将我的 Component.tsx 重命名为 index.tsx。我不想在我的项目中有 200 个 index.tsx 文件,并且使用 package.json 的 main 允许我拥有 import SomeComponent from './components/SomeComponent' 而不是 import SomeComponent from './components/SomeComponent/SomeComponent',所以这很棒。
这是我的tsconfig 文件:
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "commonjs",
"outDir": "dist",
"moduleResolution": "node",
"resolveJsonModule": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"declaration": true,
"jsx": "react"
},
"include": ["src"]
}
非常感谢您的宝贵时间以及您的帮助或建议。
【问题讨论】:
-
使用
package.json似乎是一种不寻常的方式。如果您的意图是创建一个 monorepo,那么使用 Lerna 之类的工具来发布您的微组件可能是一个更好的主意? TypeScript 编译器只会将.ts文件转换为.js文件(并创建相应的.d.ts声明)。它不能用于操纵其他任何东西。 -
@KarolMajewski 我会调查 lerna。感谢您的建议。
-
另见stackoverflow.com/questions/40471152/…。我在 nodejs 项目中遇到了类似的问题,通过在使用“resolveJsonModule”标志时将我的
require更改为import来解决这个问题。
标签: reactjs typescript npm package.json tsc