gpt4 book ai didi

javascript - Webpack - Require.context - 如何要求目录中除 `_test.js` 之外的所有 .js 文件?

转载 作者:行者123 更新时间:2023-11-29 19:07:29 25 4
gpt4 key购买 nike

我的目标是创建一个文件

  1. 要求目录中的所有 JS 文件不以 _test.js 结尾
  2. 做一个 module.exports 等于从那些 View 文件返回的模块名称数组。

我以为我有这个:

// 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 不支持正则表达式负向后视,如果没有它,我对正则表达式的了解还不够。

最佳答案

好的,我可以使用 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;

关于javascript - Webpack - Require.context - 如何要求目录中除 `_test.js` 之外的所有 .js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com