首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webpack的批量要求实现问题的替代方案

Webpack的批量要求实现问题的替代方案
EN

Stack Overflow用户
提问于 2015-08-18 20:19:55
回答 3查看 1.5K关注 0票数 5

我正在用Webpack和Angular开发nw.js应用。我想要实现的东西,我已经看到和使用在我的另一个平面角应用程序,从这个样板https://github.com/jakemmarsh/angularjs-gulp-browserify-boilerplate

下面的代码为代码和模块组织服务,它做得很好。在每个模块中都有一个_index.js文件,其中包含以下内容:

代码语言:javascript
复制
var bulk = require('bulk-require');
module.exports = angular.module('app.services', []);
bulk(__dirname, ['./**/!(*_index|*.spec).js']);

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

代码语言:javascript
复制
var app = require('./_index');
app.controller('SomeCtrl', function...);

现在,对于Webpack实现,我尝试调整这个示例

代码语言:javascript
复制
require.context("..", true, /^grunt-[^\/]+\/tasks/[^\/]+$/);

这是我的版本

代码语言:javascript
复制
require.context(__dirname, true, /./**/!(*_index|*.spec).js/);

我很确定我的正则表达式没有正确地应用到那里,所以我需要你的帮助,如何使这个工作。

另一方面,我不确定样板的大量功能是如何要求的,以及它到底做了什么。我相信它以某种方式包含了所有的文件,因为否则应用程序的其他部分都不会知道它们。因此,相反,包括每个指令,服务和控制器手动,我想说,它为您完成了这项工作。

非常有义务地提供帮助:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-19 20:57:04

解决了。

最后,我使用了这个页面的解决方案,并对其进行了一些调整。@ regex 3335966提供的regex返回了我打算排除的文件,但还是要感谢:)

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

这样做的目的是包括文件夹和子文件夹中的所有文件,而不是_index.js

然而,这个regex返回每个.js文件:

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

由于我不知道regex,因此在函数中将_index.js排除在外:

代码语言:javascript
复制
var req = require.context("./", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
    if (key !== './_index.js') {
        req(key);
    }
});

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

代码语言:javascript
复制
module.exports = angular.module('app.homeModule', []);

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

这样,我就定义了一个角度模块,并将其提供给文件夹中的所有其他文件(控制器、服务、指令)。

如果有人知道如何在regex中进行排除,我将不胜感激。

票数 2
EN

Stack Overflow用户

发布于 2015-08-19 01:37:57

我不确定,也可能弄错了,但似乎在正则表达式中不正确地使用*量词,而不是转义字符/.;您试图将冗余量词应用于/*(|

如果您无法获得“任何字符0或更多次”,则必须使用.*

就像这样:

代码语言:javascript
复制
/\.\/.*\/!(.*_index|.*\.spec)\.js/

您也可以使用\w -任何字母数字字符(而不是.);

代码语言:javascript
复制
/\.\/\w*\/!(\w*_index|\w*.spec)\.js/

我也不明白,当你使用!的时候,你是什么意思;

此示例查找字符串,如aaa/bbb/ccc/blabla_index.js & aaa/bbb/ccc/blabla.spec.js

代码语言:javascript
复制
/(\w*\/)*(\w*_index|\w*\.spec)\.js/

我希望这能帮到你;

票数 0
EN

Stack Overflow用户

发布于 2015-12-26 11:26:56

在ElectronJS上,我编写了一个小型webpack加载程序,可以按模式要求目录树中的所有文件,就像批量文件一样。

我用它来要求模块。js文件示例:

代码语言:javascript
复制
//@require "./**/index.js" 

我使用它来要求所有模块依赖(js,html用于模板缓存,图像)。js文件示例:

代码语言:javascript
复制
//@require "./**/!(index|config|run)*" 

并将其用于css。css文件示例:

代码语言:javascript
复制
@require "./**/!(app|bootstrap).css"; 

我在我的项目中成功地使用了它。也许是别人让生活更轻松。https://www.npmjs.com/package/required-loader

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32081903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档