【问题标题】:How to copy package.json in dist or build folder when running tsc (TypeScript compiler)运行 tsc(TypeScript 编译器)时如何在 dist 或 build 文件夹中复制 package.json
【发布时间】: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.jsonmain 允许我拥有 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


【解决方案1】:

只需将其包含在您的tsconfig.json 文件中并启用resolveJsonModule 编译器选项即可。您可以通过将以下配置合并到您的 tsconfig.json 文件中来做到这一点:

{
    "compilerOptions": {
        "resolveJsonModule": true
    },
    "include": ["./package.json"]
}

【讨论】:

    猜你喜欢
    • 2020-07-10
    • 2020-03-31
    • 2020-07-28
    • 1970-01-01
    • 2020-03-22
    • 2016-12-31
    • 2018-04-15
    • 2019-11-16
    • 1970-01-01
    相关资源
    最近更新 更多