Vue コンパイルで共有される計算関数を別のパッケージに分ける
P粉421119778
2023-09-01 17:46:49
<p>共通の <code>vue/nuxt</code> 固有のコードを異なるパッケージ間で共有するにはどうすればよいですか? </p>
<p><code>monorepo</code> を使用したくありませんが、独自のパッケージに分離したい共有コードがいくつかあります。この共有コード (新しいパッケージ) は、<code>@nuxtjs/composition-api</code> を使用して記述されており、共有の <code>計算された</code> と、さまざまな環境で何度も使用される <code> にすぎません。コンポーネント/テンプレート ;メソッド</code>。 </p>
<p>このパッケージをプラグインとして設定したくないです。代わりに、直接インポートしてツリー シェーキングを利用します (<code>composition-api</code> と同様)。 </p>
<p><code>rollupjs</code> を使用してインポート可能なモジュールを作成することに慣れています。 </p>
<pre class="brush:php;toolbar:false;">//新しいパッケージ
//インデックス.js
'./src/isTrue' から { デフォルトとして isTrue } をエクスポートします
...
//src/isTrue
import { computed } from '@nuxtjs/composition-api'
デフォルトをエクスポート (p) => {
return computed(() => p === 'true') //これにより応答性が損なわれるかどうかはわかりません。 ! ? !
}</pre>
<p><code>rollupjs</code></p> 経由で <code>.ssr、.esm、.min</code> 形式にコンパイルするのに問題はありませんでした。
<p>新しいパッケージを作業ファイルにインポートすると、問題が発生します。 </p>
<pre class="brush:php;toolbar:false;">import { isTrue } from 'new-package'
デフォルトをエクスポート{
名前: 'testComp'、
セットアップ(小道具){
戻る {
isActive: isTrue(props.active)
}
}</pre>
<p> は次のものを生成します: </p>
<pre class="brush:php;toolbar:false;">[vue-composition-api] 関数を使用する前に Vue.use(VueCompositionAPI) を呼び出す必要があります。 </pre>
<p><code>@nuxtjs/composition-api</code> が VueCompositionAPI のラッパーであることを理解しています。 </p>
<p>新しいパッケージをプラグインとしてインストールしたくないので、新しいパッケージのインストールを省略します(インストール例:https://github.com/wuruoyun/vue-component-lib-starter/blob) /master/src/install .js)</p>
使用した
リーリーオプション API
rollupjs
を使用して library.js をコンパイルし、インポートします
リーリー