当我尝试在 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
我有一个副业项目,Vue.js 3并vite作为我的捆绑商。
每次构建之后,捆绑的文件都会从之前的构建中获得相同的哈希值,例如:
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,但是:
有没有办法配置 vite 在新构建后随机创建新哈希,或者您知道清除缓存的另一个技巧吗?
是否可以安装 Vue 3,但仍以“Vue 2”方式执行操作?换句话说,我看到 Vue 3 具有新的 Composition API,但这是可选的还是 Vue 3 中必需的处理方式?
出于某种原因,我认为 Vue 3 仍然允许您以 Vue-2 的方式做事,而是使用 Options API。难道不是这样吗?谢谢。
<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)
模板似乎无法使用设置语法变量读取脚本。我怎样才能避免这个警告?
我定义了一个类似于下面的 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 文档中找不到任何内容。是否可以像这样声明生命周期钩子?
我创建了一个钩子函数并想在其他地方重用它:
\nimport { 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}\nRun Code Online (Sandbox Code Playgroud)\n但是在selectItem.value = trigger,我收到类型错误Type 'UnwrapRefSimple<T>' is not assignable to type 'T'\xe3\x80\x82 …
我收到一条错误消息: 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) 使用 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) 我在一些旧的(?)文档和代码中看到了对getCurrentInstance()函数的引用,但在当前的 Vue 3 文档中找不到它。
已getCurrentInstance()弃用吗?
如果有,原因是什么?(inject()考虑够了吗?)如果没有,为什么我在文档中找不到它?
运行我的应用程序时出现此错误:
警告编译了 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)