IDEでフロントエンドのみを開く場合に開発者エクスペリエンスを向上させる
このTipは@kaidohallikにより提出されました
少なくともVisual Studio Codeでは、次の動作が発生します。
フルスタックアプリケーション(サーバーやクライアントをスキップしない)を生成し、フロントエンド開発者ができるだけ少ないファイルを表示し、IDEでフォルダsrc/main/webapp/app
のみを開く場合、IDEはapp
で始まるインポートを認識しません。これらのインポートは赤で表示され、開発者はインポートされたクラスの内容を見ることができず、ワンクリックでこれらのインポートされたクラスにジャンプできません。パスapp
は、生成されたアプリケーションのルートフォルダにあるtsconfig.json
ファイルに定義されているため、一部のサブフォルダを開くと、この情報が失われます。
可能な解決策1
次の内容のファイルsrc/main/webapp/app/tsconfig.json
を追加します。
{
"extends": "../../../../tsconfig.json"
}
テストの場合は、同じ内容のファイルsrc/test/javascript/spec/tsconfig.json
を追加します。
{
"extends": "../../../../tsconfig.json"
}
その後、Visual Studio Codeでフォルダsrc/main/webapp/app
またはsrc/test/javascript/spec
のみを開く場合、パスapp
を解決できます。
可能な解決策2
- インポートエイリアスを相対パスに置き換えるノードスクリプト
remove-import-alias.js
をアプリケーションルートフォルダに追加します。
const fs = require('fs');
removeImportAlias = function(dir, level, additionalPath) {
fs.readdirSync(dir).forEach(function(file) {
if (fs.statSync(dir + file).isDirectory()) {
removeImportAlias(dir + file + '/', level + 1, additionalPath);
} else if (file.endsWith('.ts')) {
fs.readFile(dir + file, 'utf8', function (err, content) {
if (err) {
console.log(err);
} else {
let path = '../'.repeat(level);
if (additionalPath) {
path += additionalPath;
}
if (!path) {
path = './';
}
const newContent = content.replace(/import \{ (.*) \} from 'app\/(.*)';/g, `import { $1 } from '${path}$2';`);
fs.writeFile(dir + file, newContent, 'utf8', function (err) {
if (err) {
console.log(err);
}
});
}
});
}
});
};
removeImportAlias(`./src/main/webapp/app/`, 0);
removeImportAlias(`./src/test/javascript/spec/`, 0, '../../../main/webapp/app/');
-
remove-import-alias.js
を.eslintignore
に追加します。 -
追加されたスクリプト
node remove-import-alias.js
を実行します。 -
tsconfig.json
ファイルのcompilerOptions.paths
セクションからapp/*
を削除してください。