Я пытался выяснить проблему, используя Webpack, webpack-merge и отдельные файлы разработки Webpack, используя TypeScript, и я вроде понял, что мне нужно объявить функцию псевдонима типа, которая передается из * Файл 1001 * webpack.common.ts в файл webpack.dev.ts .
Вот что я пытался сделать изначально. У меня есть файл webpack.common.ts , который загружается в базовой конфигурации c:
import { Configuration } from 'webpack';
import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';
const common: Configuration = {
module: {
rules: [
{
exclude: /node_modules/,
test: /\.ts(x?)$/,
use: [{ loader: 'ts-loader' }],
},
{
enforce: 'pre',
loader: 'source-map-loader',
test: /\.js$/,
},
],
},
resolve: {
extensions: ['.ts', '.tsx', '.js'],
plugins: [new TsconfigPathsPlugin({})],
},
};
export default common;
У меня есть отдельные файлы propack и dev Webpack, использующие webpack-merge. Вот webpack.dev.ts :
import { Configuration } from 'webpack';
import common from './webpack.common';
import path from 'path';
const __dirname = path.resolve();
const dev: Configuration = merge(common, {
devServer: {
compress: true,
contentBase: path.join(__dirname, 'dist/dev'),
historyApiFallback: true,
hot: true,
open: true,
port: 9000,
},
devtool: 'source-map',
externals: {
'react': 'React',
'react-dom': 'ReactDOM',
},
mode: 'development',
});
export default dev;
Это приводит к ошибке внутри метода merge
:
Аргумент типа 'import (( "... / node_modules / @ types / webpack / index"). Конфигурация 'не может быть назначена параметру типа import ("... / node_modules / @ types / webpack-merge / node_modules / @ types / webpack / index ") .Configuration '.
Исходя из этого, похоже, что webpack-merge имеет свои собственные типы Webpack, а Webpack и webpack-merge используют два разных типа Configuration
.
Я попытался обновить наборы webpack-merge, чтобы он импортировал наборы Webpack, а не его собственный набор.
Внутри файла index.d.ts файла webpack-merge:
// import { Configuration } from 'webpack';
import { Configuration } from '../webpack';
После этого я получаю другую ошибку из merge
метода в webpack.dev.ts :
Аргумент типа '{devServer: { сжимать: логическое значение; contentBase: строка; historyApiFallback: логическое значение; горячий: логический; открытый: логический; номер порта; }; devtool: "карта-источник"; внешние: {'реагируют': строка; 'response-dom': строка; }; режим: «разработка»; } 'нельзя назначить параметру типа «Конфигурация».
При наведении курсора на merge
в VS Code, это информация о типе, которую я получаю для него:
( псевдоним) merge (... configs: Configuration []): Configuration
Должен ли я обновлять путь импорта для webpack-merge, чтобы он использовал те же объявления типов? И как я могу обновить merge
для ввода этих типов webpack-dev-server (без использования any
)?