Module.exports с импортом es6 для webpack.config.ts в машинописном тексте - PullRequest
0 голосов
/ 04 июня 2019

Я использую веб-пакет с машинописью с конфигом сам по себе в машинописи. Инструкция здесь

В моем корне у меня есть webpack.config.base.ts


import webpack from "webpack";

const getConfig = ( appDir: string, distDir: string, env: any, args: any ): webpack.Configuration => {
    const config: webpack.Configuration = {
        entry: {

        },
        output: {

        },
        resolve: {
            plugins: [

            ],
            extensions: [".ts", ".tsx", ".js"]
        },
        devtool: "source-map",
        module: {
            rules: [
            ]
        },
        plugins: [
        ]
    };

    return config;
};

module.exports = getConfig;

У меня есть два проекта, каждый со своим webpack.config.ts

import webpack from "webpack";
import * as path from 'path';

const getConfig = require("../../webpack.config.base");

const appDir = __dirname;
const distDir  = path.resolve(__dirname, "../AppOne.Web/wwwroot");

const getConfigFactory = (env: any, args: any): webpack.Configuration => getConfig(appDir, distDir, env, args);

module.exports = getConfigFactory;

Это все работает абсолютно нормально. Вот полный пример этого фабричного getConfig = () => {} стиля.

Моя проблема, когда я пытаюсь измениться, чтобы изменить

const getConfig = require("../../webpack.config.base");

К импорту es6. Это даже предусмотрено в качестве предложения кодом VS.

enter image description here

Когда я применяю это изменение, я получаю

enter image description here

Вот мой tsconfig.json У меня уже включен [allowSyntheticDefaultImports][5]. Предложено здесь .

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "moduleResolution": "node",
    "jsx": "react",
    "experimentalDecorators": true,
    "lib": [
      "es2015",
      "dom"
    ],
    "target": "es5",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": true,
    "typeRoots": [
      "./node_modules/@types/",
      "./types/"
    ],
    "baseUrl": ".",
    "paths": { }
  },
  "include": [
    "./src/**/*.ts",
    "./src/**/*.tsx"
  ]
}

Но я все равно добавил export default getConfig; ... и npm run build снова. Это все еще терпит неудачу.

const getConfigFactory = (env: any, args: any): webpack.Configuration => getConfig(appDir, distDir, env, args);
                                                                                  ^
TypeError: webpack_config_base_1.default is not a function

Моя последняя попытка перед тем, как врезаться в стол, была смена

import getConfig from "../../webpack.config.base";
import * as base from "../../webpack.config.base";

Удалите export default getConfig; в webpack.config.base.ts и экспортируйте const getConfig напрямую как export const getConfig. Но в этот момент какой смысл module.exports = getConfig. Не говоря уже о том, что это не кровавая работа (та же проблема, что и раньше)

const getConfigFactory = (env: any, args: any): webpack.Configuration => base.getConfig(appDir, distDir, env, args);
                                                                              ^
TypeError: base.getConfig is not a function

Что мне здесь не хватает? Почему я не могу просто заменить const getConfig = require("../../webpack.config.base"); на import getConfig from "../../webpack.config.base"

PS.

Вот мой "scripts" для запуска этого

    "build:appone": "webpack --mode=development --config ./src/AppOne.App/webpack.config.ts",
    "build:apptwo": "webpack --mode=development --config ./src/AppTwo.App/webpack.config.ts",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...