Language-tools: 拡張なしでSvelteコンポーネントのインポートをサポート

作成日 2020年09月23日  ·  5コメント  ·  ソース: sveltejs/language-tools

機能リクエストは問題に関連していますか?

多くのサブコンポーネントを持ついくつかの複雑なコンポーネントがあります。 サブコンポーネントはプライベートであり、1つの大きなコンポーネントを作成するために一緒になります。

次に例を示します。

form/
  input.svelte
  textarea.svelte
  index.svelte
  radio.svelte
  checkbox.svelte

希望するソリューションを説明してください

form/index.svelte明示的に書くのではなく、 form/form/index.svelteに解決できるようにしたいと思います。

このプラグインは、デフォルトで、拡張子が.svelteのファイルに対してnode.jsスタイルの解像度に従う必要があると思います。

form/             => form/index.svelte
form/input        => form/input.svelte (or form/input/index.svelte)
form/input.svelte => form/input.svelte
enhancement

最も参考になるコメント

これに対するRichの気持ちを知りたい場合は、 https

私も同意します。 拡張子なしでファイルを解決できるからといって、そうすべきだという意味ではありません。

全てのコメント5件

どのファイルがSvelteファイルで、どのファイルが通常のファイルであるかが区別できなくなったため、私はこれに反対しています。 同じフォルダにindex.jsindex.svelteがある場合はどうなりますか? 何をインポートする必要がありますか? これは重大な変更になります。 また、私が知る限り、それはバンドラーによってもサポートされていません。

特定のケースでは、次の内容でindex.jsを追加することをお勧めします。

export { default as Index } from './index.svelte';
// ... you can add your other Svelte files here as well

そしてそれを次のようにインポートします

<script>
   import { Index } from './form';
</script>

お返事をありがとうございます。 この問題はあまり物議を醸すとは思わなかったので、同じページにいることを再確認したいと思います。

Javascript、Typescript、JSX、またはTSXファイルを解決するのと同じ方法でSvelteファイルを解決する機能を求めています。

同様に、TypescriptまたはReactプロジェクトに拡張機能を追加する必要はありません。

import A from "./a.ts"
// you can just do
import A from "./a"

VSCode typescriptリゾルバーは、Node.js解決ルールに従います。 ノードの解決ルールの設計について話しているとき、あなたの主張は非常に有効です。 私はあなたがより制限的であることについて同意します。

しかし、船が出航したことを考えると、 .svelte拡張機能が.ts.tsx.jsx拡張機能と何が違うのでしょうか。

拡張機能をスキップすることは、歴史的にノードの解決メカニズムの特異性です。 NpmのIsaacZ。Schlueterは、当時の議論に関わっていたと思いますが、それ以来、それについて後悔を表明しています。 そして、彼は彼の投稿へのコメントで理解できないことに遭遇しました。 これは確かに非常に物議を醸すトピックですのでご安心ください。

標準のESMインポートには、拡張機能をスキップするという意味では何もありません。これは、デフォルトでSvelte(およびRollup)が一致する傾向がある方向です。

そうは言っても、それは純粋にあなたが使用するバンドラーの関心事です。 私の記憶が正しければ、Webpackでは.svelte拡張子はデフォルトでオプションです。 そしてロールアップでは、それはノード解決プラグインの

そうは言っても、それは純粋にあなたが使用するバンドラーの関心事です。 私の記憶が正しければ、Webpackでは.svelte拡張子はデフォルトでオプションです。 そしてロールアップでは、それはノード解決プラグインの

興味深いことに、webpackプラグインのデフォルトで拡張機能がオプションであることを知りませんでした。

これをサポートするということは、言語サーバーでのモジュール解決の方法を変更することを意味します。 また、この動作が必要かどうかを宣言できるように設定する必要があります。結局、Svelteインポートを.svelteなしで書き込む場合は、ビルド構成も変更する必要があります。

他の人がこれを検討できるように、再開します。

これに対するRichの気持ちを知りたい場合は、 https

私も同意します。 拡張子なしでファイルを解決できるからといって、そうすべきだという意味ではありません。

このページは役に立ちましたか?
0 / 5 - 0 評価