标签: vuejs3

使用 vite 构建 lib 时如何设置多个输出

当我尝试在 vue3 中构建库时,我想设置多个输出文件。代码如下:

rollupOptions {
  output: [
    {
      file: 'bundle.js',
      format: 'cjs'
    },
    {
      file: 'bundle.min.js',
      format: 'iife',
      name: 'version',
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

然后我会得到一个错误:

您必须为单文件构建设置“output.file”,或者在生成多个块时设置“output.dir””

那么,我该怎么做才能使这项工作成功呢?

投票:2.3.7

rollup lib vuejs3 vite

15
推荐指数
2
解决办法
2万
查看次数

vue3中如何强制vite清除缓存

我有一个副业项目,Vue.js 3vite作为我的捆绑商。

每次构建之后,捆绑的文件都会从之前的构建中获得相同的哈希值,例如:

index.432c7f2f.js   <-- the hash will be identical after each new build
index.877e2b8d.css
vendor.67f46a28.js
Run Code Online (Sandbox Code Playgroud)

因此,在每次新构建之后(文件上具有相同的哈希值),我必须重新加载浏览器以清除缓存并查看我所做的更改。

我尝试在 中使用不同的版本号强制清除package.json,但是:

  1. 在Vite/Rollup环境下不起作用,
  2. 每次更改后都手动输入新号码是没有意义的。

问题:

有没有办法配置 vite 在新构建后随机创建新哈希,或者您知道清除缓存的另一个技巧吗?

caching bundle rollup vuejs3 vite

15
推荐指数
2
解决办法
5万
查看次数

我是否必须在 Vue 3 中使用 Composition API,或者我仍然可以用“Vue 2”方式做事吗?

是否可以安装 Vue 3,但仍以“Vue 2”方式执行操作?换句话说,我看到 Vue 3 具有新的 Composition API,但这是可选的还是 Vue 3 中必需的处理方式?

出于某种原因,我认为 Vue 3 仍然允许您以 Vue-2 的方式做事,而是使用 Options API。难道不是这样吗?谢谢。

vue.js vuejs2 vuejs3 vue-composition-api vue-options-api

15
推荐指数
1
解决办法
3441
查看次数

如何避免“组件已声明但其值从未被读取”。当我使用 Vue3 设置语法时?

<template>
  <ConfigProvider :locale="getAntdLocale">
    <AppProvider>
      <RouterView />
    </AppProvider>
  </ConfigProvider>
</template>
Run Code Online (Sandbox Code Playgroud)
<script lang="ts" setup>
  import { ConfigProvider } from 'ant-design-vue';
  import { AppProvider } from '/@/components/Application';
  import { useTitle } from '/@/hooks/web/useTitle';
  import { useLocale } from '/@/locales/useLocale';

  // support Multi-language
  const { getAntdLocale } = useLocale();

  // Listening to page changes and dynamically changing site titles
  useTitle();
</script>
Run Code Online (Sandbox Code Playgroud)

Vetur 显示此警告:

'ConfigProvider' is declared but its value is never read.Vetur(6133)

'getAntdLocale' is declared but its value is never read.Vetur(6133)
Run Code Online (Sandbox Code Playgroud)

模板似乎无法使用设置语法变量读取脚本。我怎样才能避免这个警告?

vscode-extensions vetur vuejs3

15
推荐指数
1
解决办法
1万
查看次数

是否可以使用 &lt;script setup&gt; 语法在 Vue 3 中定义生命周期方法?

我定义了一个类似于下面的 SFC

<script setup>
const msg = 'Hello World!'
const props = defineProps({....})
.....
function onMounted() {
    console.log('the component is now mounted')
}
</script>

<template>
    <p>{{ msg }}</p>
</template>
Run Code Online (Sandbox Code Playgroud)

onMounted函数根本没有执行。

我在 Vue 文档中找不到任何内容。是否可以像这样声明生命周期钩子?

vue.js vuejs3 vue-sfc

15
推荐指数
1
解决办法
1万
查看次数

vue UnwrapRefSimple&lt;T&gt; 泛型类型无法在反应时分配给 T

我创建了一个钩子函数并想在其他地方重用它:

\n
import { ref, Ref, reactive } from 'vue'\n\nconst useSelectAarray = <T>(items: T[]) => {\n  const selectItem: Ref<T|null> = ref(null)\n  const options = reactive([...items])\n  const select = (key: string, value: any) => {\n    const trigger = options.find((item: { [index: string]: any }) => item[key] === value)\n\n    if (typeof trigger !== 'undefined') {\n      selectItem.value = trigger\n    }\n  }\n\n  return {  \n    selectItem,\n    select,\n    items: options\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是在selectItem.value = trigger,我收到类型错误Type 'UnwrapRefSimple<T>' is not assignable to type 'T'\xe3\x80\x82 …

typescript typescript-generics vuejs3

15
推荐指数
1
解决办法
1万
查看次数

Vue3:未捕获类型错误:代理上的“设置”:陷阱为属性“NewTodo”返回虚假

我收到一条错误消息: Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'NewTodo'

当我尝试重置子组件(FormAddTodo.vue)内的输入文本值时,会出现该错误。

应用程序.vue:

export default {
  data(){
    return{
      todos: [],
      newTodo: ""
    }
  },
  components: {
    Todos,
    FormAddTodo
  }
}
</script>

<template>
  <div class="container mx-auto">
      <Todos :todos="todos" />
      <div class="py-8"></div>
      <FormAddTodo :NewTodo="newTodo" :Todos="todos" />
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

FormAddTodo.vue:

<template>
    <div class="formAddTodo">
        <form @submit.prevent="handleAddTodo" class="addTodo">
            <input type="text" class="" placeholder="type new todo here..." v-model="NewTodo">
        </form>
    </div>
</template>

<script>
    export default {
        props: ['NewTodo', 'Todos'],
        methods: {
            handleAddTodo(){
                const colors = ["cyan", "blue", …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuejs3

15
推荐指数
1
解决办法
4万
查看次数

Vite 未加载 Scss

使用 Vite 和 Vue 进行的构建就像一个魅力(路径也是正确的)。然而,故事书却没有。

这是我的配置:

vite.config.js

import { defineConfig } from 'vite'
import { resolve } from 'path'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: { 
         additionalData: `@import "./src/css/global.scss";` 
     },
    },
  },
})
Run Code Online (Sandbox Code Playgroud)

.storybook/main.js:

module.exports = {
  "stories": [
    "../src/**/*.stories.mdx",
    "../src/**/*.stories.@(js|jsx|ts|tsx)"
  ],
  "addons": [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/preset-scss"
  ],
  "framework": "@storybook/vue3",
  "core": {
    "builder": "storybook-builder-vite"
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Storybook-builder-vite,因为 vite 也用于构建项目。

包.json

"devDependencies": {
    "@storybook/addon-actions": "^6.4.18",
    "@storybook/addon-essentials": "^6.4.18",
    "@storybook/addon-links": "^6.4.18",
    "@storybook/preset-scss": "^1.0.3",
    "@storybook/vue3": …
Run Code Online (Sandbox Code Playgroud)

storybook vuejs3 vite

15
推荐指数
2
解决办法
3万
查看次数

Vue 3:getCurrentInstance() 是否已弃用?

我在一些旧的(?)文档和代码中看到了对getCurrentInstance()函数的引用,但在当前的 Vue 3 文档中找不到它。

getCurrentInstance()弃用吗?

如果有,原因是什么?(inject()考虑够了吗?)如果没有,为什么我在文档中找不到它?

vue.js vuejs3

15
推荐指数
2
解决办法
2万
查看次数

Vue.js 3 - “在‘vuex’中找不到出口‘createStore’

运行我的应用程序时出现此错误:

警告编译了 1 个警告 11:50:40 PM 在 ./src/store/store.js 中警告“在‘vuex’中找不到导出‘createStore’

我安装了 vuex npm install --save vuex

我正在使用 vue 3

我的 Store.js:

import { createStore } from "vuex";
import Movie from './Modules/Movie'
import post from './Modules/post'



const store = createStore({
    modules: {
        post,
        Movie
    },

   

});

export default store;
Run Code Online (Sandbox Code Playgroud)

我的 main.js:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router'
import store from './store/store.js'
const app = createApp(App);
app.use(store);
app.use(router);

app.mount('#app');
Run Code Online (Sandbox Code Playgroud)

vue.js vuex vuejs3 vuex4

14
推荐指数
1
解决办法
5107
查看次数