看起来您必须"cast"
将节点连接到jscodeshift
.
一个解决方案是:
export default (file, api) => {
const j = api.jscodeshift
const root = j(file.source)
j(root.find(j.VariableDeclaration).at(0).get())
.insertBefore(
'"use strict";'
)
return root.toSource()
}
编辑
为了您的澄清。
如果你想use strict
在文件的开头插入无论如何:
export default (file, api) => {
const j = api.jscodeshift
const s = '"use strict";';
const root = j(file.source)
root.get().node.program.body.unshift(s);
return root.toSource()
}
如果要use strict
在import
声明后添加,如果有:
export default (file, api) => {
const j = api.jscodeshift
const s = '"use strict";';
const root = j(file.source);
const imports = root.find(j.ImportDeclaration);
const n = imports.length;
if(n){
//j(imports.at(0).get()).insertBefore(s); // before the imports
j(imports.at(n-1).get()).insertAfter(s); // after the imports
}else{
root.get().node.program.body.unshift(s); // begining of file
}
return root.toSource();
}