將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>computed</code>和<code> ;methods</code>。 </p>
<p>我不希望將這個包設定為插件。而是直接導入以利用樹搖晃(就像<code>composition-api</code>一樣)。 </p>
<p>我熟悉使用<code>rollupjs</code>建立可匯入的模組。 </p>
<pre class="brush:php;toolbar:false;">//新包
//index.js
export { default as isTrue } 從 './src/isTrue'
…
//src/isTrue
import { computed } from '@nuxtjs/composition-api'
export default (p) => {
return computed(() => p === 'true') //我不確定這樣會不會破壞回應性? ! ? !
}</pre>
<p>我沒有遇到任何問題將其編譯為<code>.ssr, .esm, .min</code>格式,透過<code>rollupjs</code></p>
<p>問題出現在我將新套件匯入到一個工作文件時。 </p>
<pre class="brush:php;toolbar:false;">import { isTrue } from 'new-package'
export default{
name: 'testComp',
setup(props){
return {
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>
使用了
options API
使用
rollupjs
編譯 library.js,並可以導入