我正在尝试更新应用程序以支持Node -v 7.7.3。但是,当我按照以下方式运行grunt任务dom_munger时:
dom_munger:{
read: {
options: {
read:[
{selector:'script[data-concat!="false"]',attribute:'src',writeto:'appjs', isPath: true},
{selector:'link[rel="stylesheet"][data-concat!="false"]',attribute:'href',writeto:'appcss'}
]
},
src: 'app/index.html'
}
}
我收到错误:
Warning: Path must be a string. Received [ 'app/index.html' ] Use --force to continue.
我想知道是否有办法重写上面的grunt任务,或者是否有一个很好的替代dom_munger。任何帮助将不胜感激。
答案 0 :(得分:1)
根据grunt-dom-munger
Github:
当
isPath
为真时,提取的值将被假定为file 引用及其路径相对于Gruntfile.js而言 而不是他们从中读取的文件。
尝试删除isPath
属性,或更改它以匹配从Gruntfile到index.html文件的路径。
答案 1 :(得分:0)
谢谢!但是,如果Grunt和Index处于相同的文件夹结构中,这似乎只能起作用。我的结构看起来像这样:
- /app
-index.html
- gruntfile.js
没有属性' isPath' dom_munger将在与Gruntfile所在的目录相同的目录中查找js文件。
答案 2 :(得分:0)
删除isPath:true,并确保src属性中的路径相对于Gruntfile.js而不是它们从中读取的文件。
如果需要在路径中替换:
dom_munger: {
replacePath: {
options: {
callback: function($, file){
var scripts = $('script[data-concat!="false"]');
// NOTE: path is made relative to the Gruntfile.js rather than the file they're read from
for(var i=0, s, il=scripts.length; i<il; i++){
s = scripts[i];
if(s.attribs.src){
s.attribs.src = s.attribs.src.replace('../', '');
}
}
}
},
src: 'temp/index.html'
},
read: {
options: {
read: [
{selector:'script[data-concat!="false"]',attribute:'src',writeto:'appjs'},
{selector:'link[rel="stylesheet"][data-concat!="false"]',attribute:'href',writeto:'appcss'}
]
},
src: 'temp/index.html'
}
}