https://astexplorer.net/#/gist/ad90272020dd0bfb15619d93cca81b66/28d3cf7178271f4f99b10bc9352daa873c2f2b20ファイルの先頭に行を挿入するためにjscodeshiftを使用する方法
// file
var a = "a" // what if this is import statement?
// jscodeshift
export default (file, api) => {
const j = api.jscodeshift;
const root = j(file.source);
root.find(j.VariableDeclaration)
.insertBefore("use strict");
return root.toSource();
}
コードの最初の行は、ファイル間の異なる場合どうのinsertBeforeは動作しません。例えば(変数宣言、インポートステートメント)
「キャスト」は何をしているのかわかりませんが、私はあなたの意見が不足していると思います。ファイルが変数宣言の代わりにインポートステートメントで始まる場合はどうなりますか?あなたは総称して初めに挿入をどう言うでしょうか?これまで私はj.program()で再構築することでこれを得ることができただけです – user2167582
また、これはあなたが挿入することを期待していますか?あなたは単にノードを挿入することはできません。 – user2167582
@ user2167582あなたが求めたものを解決しました:)あなたはinsertBeforeを使用しようとしています。構造体の場合は、最初の部分にsoneリテラルを追加するだけでよい場合は、insertAt 0を使用できます。 – bluehipy