【发布时间】:2018-08-23 11:46:39
【问题描述】:
我有以下源设置:
src
|__ client
| |__ a.ts
| |__ b.js
|
|__ common
| |__ c.ts
| |__ d.js
|
|__ server
| |__ e.ts
| |__ f.js
typescript 和 javascript 文件都可以存在于源代码中。但是,没有入口点(没有“主文件”)。
我的目标是获得两个捆绑包:
- bundle_client.js
- bundle_server.js
每个包都包含它们相应的代码(打字稿转译,JS 只是通过,但是打字稿转译器可以使用 allowJs 来完成),以及包含来自 common 的代码的两个包。
使用 gulp 很容易,但我想迁移到 webpack,但我想不通。
这是我目前拥有的损坏配置:
const path = require('path');
const glob = require("glob");
const config = {
mode: 'development',
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
],
resolve: {
extensions: ['.tsx', '.ts', '.js']
}
},
};
const clientConfig = Object.assign({}, config, {
name: "client",
//entry: glob.sync("./src/client/**/*.ts"),
module: {
rules: [
{
include: ['/src/client/**/*', '/src/common/**/*'],
// test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
output: {
filename: 'bundle_client.js',
path: path.resolve(__dirname, 'out')
}
});
const serverConfig = Object.assign({}, config, {
name: "server",
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
include: '/src/server/**/*'
}
]
},
output: {
filename: 'bundle_server.js',
path: path.resolve(__dirname, 'out')
}
});
module.exports = [
clientConfig, serverConfig,
];
谷歌搜索我发现了一些应该有帮助的东西:
- 导出多个配置允许我创建单独的包
- 我可以使用 blob 将所有文件作为入口点
【问题讨论】:
-
这里究竟有什么问题?比如,当你运行 Webpack 时会发生什么?
-
你必须有一个入口点。你过去用 gulp 做的事情不一定会用 webpack 做。创建 2 个配置,每个入口点一个,或者一个具有两个不同入口点的配置,你就可以开始了。
-
@KirkLarkin 生成的包是空的,它们只包含 index.js 的内容,因为我将其标记为入口点,一个空文件。我希望其他文件也包含在包中。
-
@PlayMa256 如果我没有任何静态文件并且可以用作入口点怎么办?它们都是动态的,没有“主文件”。
-
如果你没有,webpack 不是适合你的工具,不幸的是,坚持 gulp。
标签: javascript typescript webpack