Создайте библиотеку react с использованием typescript и отладьте ее в другом проекте

#javascript #reactjs #typescript #webpack #create-react-app

#javascript #reactjs #typescript #webpack #create-react-app

Вопрос:

Я создаю библиотеку react с использованием typescript, структура моего проекта:

 dist/
example/simple
src/
...config files
  

Папка simple создается с помощью create-react-app . Я уже выполнил npm link процесс в simple папке, связывающей my-lib с внешним проектом. Но когда я использую import {...} from 'my-lib' from simple , появляется сообщение об ошибке:

 D:/codes/my-lib-folder/dist/my-lib.js 
Cannot find file: 'index.js' does not match the corresponding name on disk: 'D:codesmy-lib-foldernode_modulesReactreact'.
  

Мой tsconfig.json:

 {
  "compilerOptions": {
  "outDir": "./dist/",
  "sourceMap": true,
  "noImplicitAny": true,
  "module": "commonjs",
  "target": "es5",
  "jsx": "react"
  },
  "include": [
      "./src/**/*"
  ]
}
  

Моя конфигурация webpack:

 module.exports = {
  entry: "./src/index.ts",
  output: {
    path: __dirname   "/dist",
    filename: "my-lib.js",
    library: "myLib",
    libraryTarget: "umd"
  },
  resolve: {
    // Add '.ts' and '.tsx' as resolvable extensions.
    extensions: [".ts", ".tsx", ".js", ".json"]
  },
  module: {
    rules: [
      // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
      { test: /.tsx?$/, loader: "awesome-typescript-loader" },
      // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
      { enforce: "pre", test: /.js$/, loader: "source-map-loader" }
    ]
  },
  externals: {
    "react": "React"
  },
  mode: process.env.NODE_ENV ? process.env.NODE_ENV : "development"
};
  

Комментарии:

1. никогда не публикуйте изображение, не публикуйте код. Легко отлаживается и воспроизводится.

2. уже изменено на codes