我有许多主干应用都托管在同一个网站上。我试图使用grunt-manifest为它们生成appcache清单。它生成清单文件,但链接错误。我希望每个应用都有一个单独的清单文件。
例如,假设我有一个名为'hello'的应用程序,它将通过此URL访问:
mydomain.com/apps/hello
所以主要的js和css文件位于:
mydomain.com/apps/hello/app.js
mydomain.com/apps/hello/style.css
等
还有一些共享组件,例如:
mydomain.com/shared/shared.js
(我用require.js动态加载这些,所以不想连接到主app.js)
我像这样在grunt中指定清单:
manifest: {
generate: {
options: {
basePath: '<%= gconf.dist_dir %>/',
timestamp: true,
network: ['*'],
},
files: [
{
cwd: 'public/',
src: [
'apps/hello/*',
'shared/*',
// etc
],
dest: '<%= gconf.dist_dir %>/public/apps/hello/manifest.appcache' },
]
}
},
我认为问题在于我正在努力获得grunt-manifest,为站点的一部分而不是根站点生成appcache清单。我得到的清单看起来像这样:
CACHE
apps/hello/app.js
apps/hello/style.css
shared/shared.js
当我加载页面时 - 清单检索失败,因为它试图访问这样的链接:
mydomain.com/apps/hello/apps/hello/app.js
如果我手动编辑清单文件并在所有内容之前添加“/”,那么它看起来像这样:
CACHE
/apps/hello/app.js
/apps/hello/style.css
/shared/shared.js
......然后一切正常。
当我从根目录中想要它们时,问题显然是创建相对链接的清单。
我不能为我的生活弄清楚如何让grunt-manifest为我创造这些,并在前面加上'/'。
我已经尝试了自己的'basePath','cwd'自己,两者的结合。如果我把'/'放在说basePath或cwd的末尾,并尝试在'src'中添加它,它就不起作用了,我得到一个空的CACHE部分。
我确信必须有一种简单的方法来处理咕噜咕噜的模式,但我无法解决这个问题。
有什么想法吗?
(同样 - 没有足够的代表来创建新标签,但'grunt-manifest'标签可能对将来的其他人有用)
答案 0 :(得分:0)
我刚刚遇到同样的问题。
我在这里分配了模块:https://github.com/killfish/grunt-manifest
如果传入绝对路径选项:true,它将添加'/'
options: {
**absolutePath: true,**
network: ['http://*', 'https://*'],
preferOnline: true,
verbose: true,
timestamp: true
},