我将 webpack 与 typescript 一起使用,并在 typescript 中自行配置。指示here https://webpack.js.org/configuration/configuration-languages/#typescript
在我的根里我有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;
这一切都工作得很好。Here's https://github.com/michaelbull/aurelia-split-pane/blob/master/webpack.config.ts该工厂的完整示例getConfig = () => {}
style.
我的问题是当我试图改变时
const getConfig = require("../../webpack.config.base");
到 es6 导入。这甚至是 VS code 提供的建议。
当我应用此更改时,我得到
这是我的tsconfig.json
我已经有了[allowSyntheticDefaultImports][5]
已启用。建议here https://github.com/microsoft/TypeScript/issues/2242#issuecomment-223384524.
{
"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;
in the 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");
with 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",