我正在用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']);这将导出角模块,然后在同一个目录中,每个文件只需要它,并继续使用它(不太确定,但可能需要它不必在同一个目录中):
var app = require('./_index');
app.controller('SomeCtrl', function...);现在,对于Webpack实现,我尝试调整这个示例这
require.context("..", true, /^grunt-[^\/]+\/tasks/[^\/]+$/);这是我的版本
require.context(__dirname, true, /./**/!(*_index|*.spec).js/);我很确定我的正则表达式没有正确地应用到那里,所以我需要你的帮助,如何使这个工作。
另一方面,我不确定样板的大量功能是如何要求的,以及它到底做了什么。我相信它以某种方式包含了所有的文件,因为否则应用程序的其他部分都不会知道它们。因此,相反,包括每个指令,服务和控制器手动,我想说,它为您完成了这项工作。
非常有义务地提供帮助:)
发布于 2015-08-19 20:57:04
解决了。
最后,我使用了这个页面的解决方案,并对其进行了一些调整。@ regex 3335966提供的regex返回了我打算排除的文件,但还是要感谢:)
/(\w*\/)*(\w*_index|\w*\.spec)\.js/
这样做的目的是包括文件夹和子文件夹中的所有文件,而不是_index.js。
然而,这个regex返回每个.js文件:
/^(.*\.(js$))[^.]*$/igm
由于我不知道regex,因此在函数中将_index.js排除在外:
var req = require.context("./", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
if (key !== './_index.js') {
req(key);
}
});所以现在我基本上是这样做的:
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中进行排除,我将不胜感激。
发布于 2015-08-19 01:37:57
我不确定,也可能弄错了,但似乎在正则表达式中不正确地使用*量词,而不是转义字符/和.;您试图将冗余量词应用于/、*、(和|;
如果您无法获得“任何字符0或更多次”,则必须使用.*
就像这样:
/\.\/.*\/!(.*_index|.*\.spec)\.js/您也可以使用\w -任何字母数字字符(而不是.);
/\.\/\w*\/!(\w*_index|\w*.spec)\.js/我也不明白,当你使用!的时候,你是什么意思;
此示例查找字符串,如aaa/bbb/ccc/blabla_index.js & aaa/bbb/ccc/blabla.spec.js
/(\w*\/)*(\w*_index|\w*\.spec)\.js/我希望这能帮到你;
发布于 2015-12-26 11:26:56
在ElectronJS上,我编写了一个小型webpack加载程序,可以按模式要求目录树中的所有文件,就像批量文件一样。
我用它来要求模块。js文件示例:
//@require "./**/index.js" 我使用它来要求所有模块依赖(js,html用于模板缓存,图像)。js文件示例:
//@require "./**/!(index|config|run)*" 并将其用于css。css文件示例:
@require "./**/!(app|bootstrap).css"; 我在我的项目中成功地使用了它。也许是别人让生活更轻松。https://www.npmjs.com/package/required-loader
https://stackoverflow.com/questions/32081903
复制相似问题