我正在尝试使用 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帮了大忙。
如果您遇到类似的问题,这可能会有所帮助。
最佳答案
默认情况下,r.js
已经从处理以句点开头的目录中排除。设置为 fileExclusionRegExp
,默认值为 /^\./
,因此将跳过 .svn
。 (查看 r.js
的代码,我看到 fileExclusionRegExp
与每个文件的基本名称相匹配。)
您看到的错误与您的输入目录一致,与您的输出一致。您没有将 keepBuildDir
设置为 true
,因此您的输出目录将被删除。更改您的 dir
以在其他地方构建。
或者您将输出置于版本控制之下。将 keepBuildDir
设置为 true
可以解决眼前的问题,但如果对 r.js
的输出执行转换,可能会在以后产生更多问题>.
关于javascript - 使用 requirejs 优化时排除 .svn 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683471/