Webpack是批量需求实现问题的替代方案

Nem*_*vic 5 javascript regex angularjs webpack nw.js

我正在使用Webpack和Angular构建nw.js应用程序.我希望通过这个模板https://github.com/jakemmarsh/angularjs-gulp-browserify-boilerplate实现我在其他平面角度应用程序中看到并使用的内容.

以下代码用于代码和模块组织,并且它做得很好.在每个模块中都有一个_index.js文件,其中包含以下内容:

var bulk = require('bulk-require');
module.exports = angular.module('app.services', []);
bulk(__dirname, ['./**/!(*_index|*.spec).js']);
Run Code Online (Sandbox Code Playgroud)

这会导出angular模块,然后在同一目录中每个文件只需要它,并继续使用它(不太确定但可能需要它的那个不必在同一目录中):

var app = require('./_index');
app.controller('SomeCtrl', function...);
Run Code Online (Sandbox Code Playgroud)

现在的执行的WebPack我试过调整本例中:

require.context("..", true, /^grunt-[^\/]+\/tasks/[^\/]+$/);
Run Code Online (Sandbox Code Playgroud)

这是我的版本

require.context(__dirname, true, /./**/!(*_index|*.spec).js/);
Run Code Online (Sandbox Code Playgroud)

我很确定我的正则表达式没有在那里正确应用,所以我需要你的帮助来解决这个问题.

另一方面,我不确定样板的批量需求功能以及它的功能.我相信它以某种方式包含所有文件,因为否则应用程序的其他任何部分都不会知道它们.所以,相反,包括手动包含每个指令,服务和控制器,我会说它为你完成了这项工作.

帮忙多了:)

Nem*_*vic 2

解决了。

我最终使用了此页面中的解决方案,并对其进行了一些调整。@user3335966 提供的正则表达式返回了我想要排除的文件,但无论如何还是谢谢:)

/(\w*\/)*(\w*_index|\w*\.spec)\.js/

我们的想法是包含文件夹和子文件夹中的所有文件,但不包含_index.js.

然而,这个正则表达式确实返回每个 .js 文件:

/^(.*\.(js$))[^.]*$/igm

由于我不知道正则表达式,因此我最终排除了_index.js函数中的 ,结果是:

var req = require.context("./", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
    if (key !== './_index.js') {
        req(key);
    }
});
Run Code Online (Sandbox Code Playgroud)

所以现在我基本上是这样做的:

module.exports = angular.module('app.homeModule', []);

var req = require.context("./", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
    if (key !== './_index.js') {
        req(key);
    }
});
Run Code Online (Sandbox Code Playgroud)

这样我定义了一个角度模块,并使其可供该文件夹内的所有其他文件(控制器、服务、指令)使用。

如果有人知道如何在正则表达式中进行排除,我将不胜感激。