使用requirejs进行优化时排除.svn文件夹

时间:2013-12-19 13:52:07

标签: javascript svn optimization requirejs r.js

我正在尝试使用r.js优化项目,源代码保存在subversion中。我收到以下错误:

> node r.js -o generic-profile.js
> Error: Error: EPERM, operation not permitted 'C:\xxx\GUI\generic\.svn\entries'
                at Object.fs.unlinkSync (fs.js:760:18)

我认为问题是r.js正在尝试将.svn目录从源文件夹复制到构建文件夹。

有没有办法在运行r.js时排除.svn目录?例如,我可以在构建配置文件中添加一些内容吗?

以下是我的构建配置文件目前的样子:

({
    "appDir": "../src/generic/",
    "baseUrl": ".",
    "dir": "../generic/",
    "include": ["../vendor/require",
                "../vendor/text",
                "../vendor/i18n"],
    "optimize": "uglify2",
    "modules": [
        {
            name: "app"
        }
    ],
    "mainConfigFile": "generic-config.js"
})

更新

自从阅读Louis的优秀答案以来,很明显这不是颠覆问题,而是配置不当的构建配置文件。我已经做了一些关于如何设置构建配置文件的进一步阅读,this example帮助了很多。

如果您遇到类似的问题,这可能会有所帮助。

1 个答案:

答案 0 :(得分:3)

默认情况下,r.js已从处理以句点开头的目录中排除。设置为fileExclusionRegExp,默认值为/^\./,因此将跳过.svn。 (查看r.js的代码,我看到fileExclusionRegExp与每个文件的基名匹配。)

您看到的错误与您的输入目录一致,与输出一致。您没有将keepBuildDir设置为true,因此您的输出目录将被删除。将您的dir更改为在其他地方构建。

或者您将输出保持在版本控制之下。将keepBuildDir设置为true可以解决当前的问题,但如果您对r.js的输出执行转换,可能会产生更多问题。