Juh*_*nen 6 javascript webpack
我正在Webpack和React上开发一个小的静态站点生成器.目前我正在变得更有活力.其中一部分是使其更具可配置性.
鉴于这样的网站结构
.
??? _book
??? assets
??? build
??? drafts
??? manuscript
??? node_modules
??? pages
??? project_source
??? styles
Run Code Online (Sandbox Code Playgroud)
我想要只从某些目录或目录中获取文件.在这种情况下,要求Markdown文件就足够了manuscript.天真var req = require.context('manuscript', true, /^\.\/.*\.md$/)会工作.
问题是,当我通过站点生成器配置传递目录时,这需要变为动态.由于require.context依赖于固定值,我认为我需要使用类似的东西将上下文更改为站点根目录var req = require.context('.', true, /^.*\.md$/),然后检查req.keys()以匹配我的配置.
在实践中,这将非常缓慢,因为它将遍历整棵树!特别是node_modules可以包含很多文件,这是应该不惜一切代价避免的.
有没有排除一个整洁的方式node_modules进行的require.context?虽然我对其他想法持开放态度,但我认为某种形式的正则表达式可能有效.
小智 9
你可以尝试:
var req = require.context('.', true, /^((?![\\/]node_modules|vendor[\\/]).)*\.md$/);
Run Code Online (Sandbox Code Playgroud)
从匹配中排除包含node_modules和vendor文件夹的路径.
我最终通过将require.context静态站点生成器推到外部配置之外来解决问题。我那里有这样的小片段:
paths: {
demo: {
path: function() {
return require.context('./demo', true, /^\.\/.*\.md$/);
},
}
}
Run Code Online (Sandbox Code Playgroud)
然后在生成器端我只使用这些上下文。
这不是我希望的解决方案,但它有效。
| 归档时间: |
|
| 查看次数: |
9071 次 |
| 最近记录: |