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

时间:2015-01-12 09:33:24

标签: javascript requirejs r.js

Hello evryone,

我试图找到一种方法让 r.js 不要复制我的 / lib / 目录中的所有文件,除了(例如) ) jquery.js require.js

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

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

但是在优化之后,我仍然可以看到其他文件也被复制了。

我有什么不对的吗?或者正则表达式是不正确的?

提前致谢

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您尝试使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的作者所建议的那样。