我正在使用Webpack和React开发一个小型静态网站生成器。目前我正在使它更加动态化,其中一个部分是使它更加可配置。
假设有这样一种网站结构:
.
├── _book
├── assets
├── build
├── drafts
├── manuscript
├── node_modules
├── pages
├── project_source
└── styles
我只想从特定的一个或多个目录中导入文件。在这种情况下,只需从manuscript
导入Markdown文件即可。天真地写var req = require.context('manuscript', true, /^\.\/.*\.md$/)
就行了。
问题是当我通过站点生成器配置传递目录时,这需要变成动态的。由于require.context
依赖于固定的值,我认为我需要改变上下文到站点根目录,使用类似var req = require.context('.', true, /^.*\.md$/)
的代码,然后检查req.keys()
来匹配我的配置。
实际上,这种方法非常慢,因为它会遍历整个目录树!特别是node_modules
可能包含大量的文件,这是应该尽量避免的。
有没有一种简洁的方法可以将node_modules
排除在require.context
之外?我想一些形式的正则表达式可能会起作用,但我也接受其他的想法。
require.context
会覆盖先前的上下文吗? - Olim Saidovfs.readdirSync
和调用require.context
来遍历目录,忽略node_modules
文件夹? - Olim Saidov