r.js - 排除特定文件列表

r.js - excluding specific list of files

大家好,

我正在尝试找到一种方法让 r.js 不从我的 /lib/[=30 复制所有文件=] 目录,除了(例如)jquery.jsrequire.js.

我正在使用 fileExclusionRegExp 选项来排除除上述文件之外的所有 *.js 文件。

 fileExclusionRegExp: '\/lib\/(?!jquery|require).*\.js'

但是优化之后,还是能看到其他文件也被复制过来了。

我做错了什么吗?或者正则表达式不正确?

提前致谢

您 运行 遇到的问题是您试图使 fileExclusionRegExp 匹配文件的整个路径,但 r.js 仅将其用于测试基础文件名。您可以从选项的描述及其默认值中推断出这一点。 description 表示:

//When the optimizer copies files from the source location to the
//destination directory, it will skip directories and files that start
//with a ".".

默认值为:

/^\./

如果要针对完整路径进行测试,它将无法排除子目录中以句点开头的文件。我们还在 this issue report.

中找到了对这种行为的确认

如果您只有一个名为 require.js 的文件和一个名为 jquery.js 的文件,那么您可以使用此正则表达式:

fileExclusionRegExp: /^(?!jquery|require).*\.js$/

否则,fileExclusionRegExp 不会这样做,您应该使用构建步骤来清理您的目录,正如 RequireJS 的作者在我上面提到的问题报告中所建议的那样。