以前、JSXファイル自身のpathを求める方法を書いたのだけど、それと $.evalFile()
を使えば「JSXファイルがあれば読み込んで挙動を変える」みたいなことができるのでメモ。
ディレクトリ構成
$ tree
.
├── lib
│ └── lib1.jsx
└── main.jsx
main.jsx
と同じ階層に lib
というディレクトリを作り、 lib
の中に lib1.jsx
というファイルがあれば読み込むようにする。
main.jsx
エントリポイントとなるファイル。
func
にアラートを表示する関数を代入した後で、もし lib/lib1.jsx
が存在すれば $.evalFile()
で読み込む。
main.jsx
const SELF = (function(){
try {app.documents.test()}
catch(e) {return File(e.fileName)}
})();
var func = function() { alert('function in main'); }
if(new File(SELF.path + '/lib/lib1.jsx').exists) {
$.evalFile(SELF.path + '/lib/lib1.jsx');
}
func();
lib1.jsx
main.jsx
から読み込まれる。
内容は func
にメッセージを変えたアラートを表示する関数を(再)代入するだけ。
lib/lib1.jsx
var func = function() { alert('function in lib'); }
lib/lib1.jsx
を置いて実行するとこのようなアラートが表示される。
lib/lib1.jsx
を削除して実行するとこのようなアラートが表示される。