我的目标是创建一个
的文件_test.js
module.exports
等于从这些视图文件返回的模块名称数组。 我以为我有这个:
// Automagically crawls through this directory, finds every js file inside any
// subdirectory, removes test files, and requires the resulting list of files,
// registering the exported module names as dependencies to the myApp.demoApp.views module.
var context = require.context('.', true, /\/.*\/.*\.js$/);
var moduleNames = _.chain(context.keys())
.filter(function(key) {
console.log(key, key.indexOf('_test.js') == -1);
return key.indexOf('_test.js') == -1;
})
.map(function(key) {
console.log("KEY", key);
return context(key)
})
.value();
module.exports = angular.module('myApp.demoApp.views', moduleNames).name;
#2正在按预期工作
#1不幸的是我很天真。虽然模块名称已被过滤掉,但仍需要_test
的所有文件,因此测试文件最终会出现在我的构建代码中。
我试图通过更新正则表达式来解决这个问题,但是JS并不支持正则表达式负面观察,而且我没有足够的正则表达式来做到这一点。
答案 0 :(得分:3)
好的,我能够使用Slava.K的评论回答我的问题。这是下面的最终代码。我必须在正则表达式中包含(?!.*index)
,因为此代码包含自己index.views.js
。
var context = require.context('.', true, /^(?!.*index).*\/(?!.*test).*\.js$/);
var moduleNames = _.chain(context.keys())
.map(function(key) {
return context(key)
})
.value();
module.exports = angular.module('myApp.demoApp.views', moduleNames).name;