在webpack 2条目中指定一个完整的子目录

时间:2017-03-28 17:30:15

标签: javascript typescript webpack webpack-2

我有一个webpack 2配置如下:

module.exports = {
    context: __dirname,
    entry: [
        "./app.ts",
        "./tab.ts",
        "./client/clientService.ts",
        "./client/clientSearchComponent.ts",
        "./infrastructure/messageComponent.ts",
        "./infrastructure/typeaheadComponent.ts",
        "./url.ts"],
    output: {
        filename: "./wwwroot/js/admin/admin.js"
    },
    devtool: "source-map",
    module: {
        rules: [
            { test: /\.ts$/, use: 'ts-loader' }
        ]
    }
};

将其导入gulp任务,如下所示......

gulp.task("admin:js",
    function (done) {
        var configuration = require(path.join(__dirname, config.js, "admin/webpack.config.js").toString());
        webpack(configuration).run(reportWebpackResults(done));
    });

我发现我必须在entry[...]中指定每个组件。

如何指定globs,它们似乎无法开箱即用。

entry: [
    "./client/**/*.ts", // module not found...

1 个答案:

答案 0 :(得分:1)

您可以使用像globule这样的glob库。 globule.find返回文件数组。所以你可以用它作为条目:

entry: globule.find("./client/**/*.ts")

如果你想包括其他入口点,你可以通过扩展返回的数组来组合它们:

entry: [
    './other/entry.js'
    ...globule.find("./client/**/*.ts")
]

或使用任何其他方式组合数组(例如Array.prototype.concat)。

或者,您可以使用单个条目,在require.context的帮助下导入所需的所有内容,如问题webpack require every file in directory中所示。

const req = require.context('./client/', true, /\.ts$/);
req.keys().forEach(req);