profile
viewpoint

vuejs/vue 169791

🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

vuejs/vetur 4422

Vue tooling for VS Code.

vuejs/vuefire 2924

🔥 Firebase bindings for Vue.js & Vuex

kazupon/vue-validator 2235

:white_check_mark: Validator component for Vue.js

karol-f/vue-custom-element 1582

Vue Custom Element - Web Components' Custom Elements for Vue.js

vuejs/rollup-plugin-vue 668

Roll .vue files

vuejs/vue-router-next 521

The Vue 3 official router (WIP)

vuejs/vue-jest 487

Jest Vue transformer

vuejs/docs-next 419

Vue 3 core documentation

TheLarkInn/unity-component-specification 211

This is a WIP draft of the Unity (Single File Web Component) Specification

push eventvuejs/docs-next

Pierre Schweiger

commit sha b2a0c914f93f72bf5d1c693431b8e08e73306823

Add Vue Mastery Introduction to Vue 3 video (#385)

view details

push time in a day

PR merged vuejs/docs-next

Add Vue Mastery Introduction to Vue 3 video release-candidate
+5 -0

0 comment

1 changed file

pieer

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+0 -24

0 comment

2 changed files

vue-bot

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon backers update (May 2020

This is an automated pull request.

+21 -24

0 comment

1 changed file

vue-bot

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+14 -44

0 comment

2 changed files

vue-bot

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+10 -40

0 comment

2 changed files

vue-bot

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon backers update (Jun 2020

This is an automated pull request.

+28 -34

0 comment

1 changed file

vue-bot

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon backers update (Jul 2020

This is an automated pull request.

+22 -30

0 comment

1 changed file

vue-bot

pr closed time in a day

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+0 -10

0 comment

2 changed files

vue-bot

pr closed time in a day

push eventvuejs/vue

vue-bot

commit sha 46ae9525964ea475dc927031e165c2b209396ac8

chore: update sponsors [ci skip] (#11570)

view details

push time in a day

delete branch vuejs/vue

delete branch : patreon-update-1596724791521

delete time in a day

PR merged vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+10 -0

0 comment

2 changed files

vue-bot

pr closed time in a day

push eventvuejs/vuejs.org

vue-bot

commit sha 334a67e426813be0dc849567db29d4632c667cbd

chore: update sponsors (#2660)

view details

push time in a day

delete branch vuejs/vuejs.org

delete branch : patreon-update-1596724791521

delete time in a day

PR merged vuejs/vuejs.org

[automated] Patreon sponsors update

This is an automated pull request.

+3 -0

0 comment

2 changed files

vue-bot

pr closed time in a day

push eventvuejs/vue-next

Evan You

commit sha 50adc014f59a7f385c836014abb059ec72c52239

refactor(reactivity): readonly collections should not track

view details

push time in 5 days

push eventvuejs/vue-next

Evan You

commit sha ed4381020fcea0494f19f11bebabd9108f2dafd7

fix(reactivity): readonly+reactive collection should also expose readonly+reactive values fix #1772

view details

push time in 5 days

issue closedvuejs/vue-next

readonly() breaks reactivity of Map

Version

3.0.0-rc.5

Reproduction link

https://codepen.io/liquid-solid/pen/ZEWzqpX?editors=0012

Steps to reproduce

Open CodePen and see console logs, or you can see an example below:

const {
  readonly,
  reactive,
  isReactive
} = Vue

const map = reactive(new Map())
const roMap = readonly(map)

map.set(4, { foo: 'bar' })

const mapItem = map.get(4)
const roMapItem = roMap.get(4)

console.log(`
Is map reactive?         - ${isReactive(map)}
Is map item reactive?    - ${isReactive(mapItem)}
Is RO map reactive?      - ${isReactive(roMap)}
Is RO map item reactive? - ${isReactive(roMapItem)}
`)

This code outputs:

Is map reactive?         - true
Is map item reactive?    - true
Is RO map reactive?      - true
Is RO map item reactive? - false

What is expected?

I expect that objects from a reactive Map will always be reactive, even if the Map is readonly.

What is actually happening?

When I get an item from readonly reactive Map it loses reactivity.


Is it a bug? If not, i don't understand how to work with maps, sets and other structs with new reactivity system. So far, plain objects still seem to be the best solution for storing data as an associative array due to the intricacies of the reactivity system.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 5 days

LiquidSolid

push eventvuejs/vue-next

Evan You

commit sha 48576e582c4177572c2fd1764fbca53a6a30abe2

fix(transition): transition should accept multiple handlers on same event fix #1746

view details

push time in 5 days

issue closedvuejs/vue-next

Transition raises wrong invalid prop type check warning on array

Version

3.0.0-rc.5

Reproduction link

https://codesandbox.io/s/vue-3-transition-event-prop-type-check-fault-wymsy

Steps to reproduce

Attach two different events handlers to the same event on transition

What is expected?

It should not raise an invalid prop type check warning

What is actually happening?

It raises a warning, saying it expected a function, but got an array.


Vue supports several event handlers attached to the same event, but Transition's prop definition doesn't accept it. It should be changed to accept a function or an array of functions.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 5 days

cathrinevaage

push eventvuejs/vue-next

Evan You

commit sha 791eff3dfbd6be9ba8d597ecf8d943cd197f9807

fix(runtime-core): avoid manual slot invocation in template expressions interfering with block tracking fix #1745

view details

push time in 5 days

issue closedvuejs/vue-next

TypeError: Cannot read property 'type' of null at unmountComponent

Version

3.0.0-rc.5

Reproduction link

https://github.com/PingTouG/layer

Steps to reproduce

leave "/componnets/container" router

What is expected?

to other router

What is actually happening?

TypeError: Cannot read property 'type' of null at unmountComponent

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 5 days

PingTouG

issue commentvuejs/vue-next

TypeError: Cannot read property 'type' of null at unmountComponent

Hmm, slots is not reactive though, so the computed is pointless... you should always call slots.default() directly.

PingTouG

comment created time in 5 days

push eventvuejs/vue-next

zhangzhonghe

commit sha 233d191d0d33802cdf7e2996569372a6442e236a

fix(keep-alive): fix activated hook invocation on nested components (#1743) fix #1742

view details

push time in 5 days

issue closedvuejs/vue-next

No call activated hook of nested components when root component of keep-alive has no activated hook.

Version

3.0.0-rc.5

Reproduction link

https://zhangzhonghe.github.io/keep-alive-bug-2/test.html

Steps to reproduce

1, click link,open devTool. 2,you can see activated hook of the "two component" has not call when the "one component" has no activated hook.

What is expected?

the activated hook of the "two component" should be called.

What is actually happening?

has no called.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 5 days

zhangzhonghe

push eventzhangzhonghe/vue-next

Evan You

commit sha 219ee8b9822b6a4ac9cf7fb0a55c38029e490e51

Update renderer.ts

view details

push time in 5 days

push eventvuejs/vue-next

Eduardo San Martin Morote

commit sha 00683fce9a1c6856be23b35ff0226d8ac5c96791

fix(runtime-dom): patch `form` as an attribute (#1788) Close #1787

view details

push time in 5 days

delete branch vuejs/vue-next

delete branch : fix/form-attribute

delete time in 5 days

PR merged vuejs/vue-next

fix: patch form as an attribute

Close #1787

+14 -0

0 comment

2 changed files

posva

pr closed time in 5 days

issue closedvuejs/vue-next

Failed setting prop "form" on <button>: value test is invalid. TypeError: setting getter-only property "form"

Version

3.0.0-rc.5

Reproduction link

https://codepen.io/gem007bd/pen/ExKxEyM

Steps to reproduce

create a button inside any app and put any form value

<template> <button type="submit" form="test_form"

Save

</button> </template>

What is expected?

in general from should be accepted inside a html button element

What is actually happening?

[Vue warn]: Failed setting prop "form" on <button>: value test is invalid. TypeError: setting getter-only property "form"

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 5 days

gem007bd

issue commentvuejs/vue-next

v-model on a custom element (select v-model)

This one is tricky because <select> relies on specific behavior with its interaction with <option> elements inside of it. So it won't work unless you implement your custom <select> and <option> with the exact same behavior as the native ones (i.e. reflecting options into DOM properties like .options, .selectedInex, .value).

Benoit-Vasseur

comment created time in 5 days

push eventvuejs/vue-next

wujieZ

commit sha 2787c34cd436e3ec4656b6986d9d14d57911a7b5

fix(reactivity): use isExtensible instead of isFrozen (#1753) close #1784

view details

push time in 6 days

issue closedvuejs/vue-next

when I try to reactive a non-extensible object, it will cause an error

Version

3.0.0-rc.5

Reproduction link

https://codepen.io/wujiez/pen/gOrOGaJ

Steps to reproduce

1.Open browser developer tools, will see a error

What is expected?

no error

What is actually happening?

cause an error:

-Uncaught TypeError: Cannot define property __v_reactive, object is not extensible

see #1753

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 6 days

wujieZ

PR merged vuejs/vue-next

fix(reactive): use isExtensible instead of isFrozen

use isExtensible instead of isFrozen

+8 -3

2 comments

2 changed files

wujieZ

pr closed time in 6 days

push eventwujieZ/vue-next

Evan You

commit sha 330b822abe90470b0d90bb59ed3bf2b69879193a

whitespace [ci skip]

view details

push time in 6 days

push eventwujieZ/vue-next

Evan You

commit sha b16433241d0e977b89ec78ec05febd117ba1f782

Update reactive.spec.ts

view details

push time in 6 days

PullRequestEvent

push eventvuejs/vue

Evan You

commit sha 6c1f3872edc129df35a2c7f0b797caa790717e8a

chore: update sponsors [ci skip]

view details

push time in 6 days

delete branch vuejs/vue

delete branch : patreon-update-1596629946535

delete time in 6 days

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+16 -36

0 comment

2 changed files

vue-bot

pr closed time in 6 days

PullRequestEvent

create barnchvuejs/vue

branch : patreon-update-1596629946535

created branch time in 6 days

delete branch vuejs/vue

delete branch : patreon-update-1596629946535

delete time in 6 days

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+16 -36

0 comment

2 changed files

vue-bot

pr closed time in 6 days

push eventvuejs/vue

vue-bot

commit sha 4611a44628e132bbd4a9cc064fba3f22e5842b41

chore: update backers [ci skip] (#11566)

view details

push time in 6 days

delete branch vuejs/vue

delete branch : patreon-update-1596603626378

delete time in 6 days

delete branch vuejs/vue

delete branch : patreon-update-1596603635928

delete time in 6 days

PR closed vuejs/vue

[automated] Patreon sponsors update

This is an automated pull request.

+4 -38

0 comment

2 changed files

vue-bot

pr closed time in 6 days

PR merged vuejs/vue

[automated] Patreon backers update (Aug 2020

This is an automated pull request.

+29 -36

0 comment

1 changed file

vue-bot

pr closed time in 6 days

push eventvuejs/vuejs.org

vue-bot

commit sha dc89f402d68d4d733a948e5118e32f2bbe4c53ed

[automated] Patreon sponsors update (#2658) * chore: update sponsors * Update _config.yml * Update _config.yml Co-authored-by: Evan You <yyx990803@gmail.com>

view details

push time in 6 days

delete branch vuejs/vuejs.org

delete branch : patreon-update-1596629946535

delete time in 6 days

PR merged vuejs/vuejs.org

[automated] Patreon sponsors update

This is an automated pull request.

+15 -10

0 comment

2 changed files

vue-bot

pr closed time in 6 days

push eventvuejs/vuejs.org

Evan You

commit sha 77a507e111e0794630e078bcbbdfc72f595ada7f

Update _config.yml

view details

push time in 6 days

push eventvuejs/vuejs.org

Evan You

commit sha ff622f49466b2560b3dafc78f7b1a6a98c2d79e3

Update _config.yml

view details

push time in 6 days

delete branch vuejs/vuejs.org

delete branch : patreon-update-1596603635928

delete time in 6 days

PR closed vuejs/vuejs.org

[automated] Patreon sponsors update

This is an automated pull request.

+0 -13

0 comment

1 changed file

vue-bot

pr closed time in 6 days

push eventvuejs/vue-cli

Haoqun Jiang

commit sha 1a8c7fdeaf370803b77f70200541bd7fd2b0166d

feat: support node nightly builds (#5556) fixes #5548

view details

Haoqun Jiang

commit sha cc38420e392f08b63d2b53aa03095bfa1f9a5b72

fix: better error message for non-existent polyfill names (#5543) Fixes #3578

view details

Haoqun Jiang

commit sha 860058548157be044a6e9ce60506849c5987acf0

feat: detect and compile Vue 3 projects (#5570)

view details

Haoqun Jiang

commit sha 7f56846a2e54ee5b748232e8b5ae2411a147416d

refactor: replace jscodeshift with vue-codemod (#5629)

view details

Haoqun Jiang

commit sha 82d65e1fffa7b869c390c2591eeade509ab2f7bf

chore: Merge branch 'master' into dev

view details

Binwei Fang

commit sha 725ca41b69773dd5178da4e11509fbe1b8f0fe35

feat(cli,cli-service,cli-test-utils): add ts declaration (#5356) Co-authored-by: Haoqun Jiang <haoqunjiang@gmail.com>

view details

Haoqun Jiang

commit sha c98f76a5fae63974219155442a14fec3da5bef8c

feat: add `skipLibCheck` option in the ts template (defaults to `true`) (#5688)

view details

Bogdan Luca

commit sha ddabb6679e4d83aafc9bd04cc5f87fb39ce757c4

fix: fix kubernetes container detection (#5681)

view details

George Tsiolis

commit sha 8f5691be8d8dc06e0059e7cae2b54141f454d34d

docs: merge plugin-related navigation items (#5655) [ci skip]

view details

Arthur

commit sha 7c2a36b889ec254bb293f8bf147129a81b870e09

refactor: use console.clear to clear the log (#5700) Co-authored-by: chentao.arthur <chentao.arthur@bytedance.com>

view details

Haoqun Jiang

commit sha b1772cadd2efca7fdd218f58d788d12e4132d62f

feat: allow choosing vue version on creation (and in presets) (#5637)

view details

Haoqun Jiang

commit sha 05057c1650462878dd8d781b8c23896bc3611dca

chore: Merge branch 'master' into dev

view details

Haoqun Jiang

commit sha 21b2691b4beb5718942dc26b91f7532df67429be

workflow: remove explicit cyclic dependencies to avoid lerna errors Though there's still implicit dependency on `@vue/cli` in `@vue/cli-test-utils`, users can fix it by installing them side-by-side.

view details

Haoqun Jiang

commit sha 15448dcd3b46809ea60097e31bd6eb6e4b9aef37

chore: pre release sync

view details

Haoqun Jiang

commit sha 56348259db4412428d9b5ab49e4bc91191c24fff

v4.5.0

view details

Haoqun Jiang

commit sha f1e77a5551f745df46353b62f4c34c2fe209a682

Revert "refactor: use console.clear to clear the log (#5700)" This reverts commit 7c2a36b889ec254bb293f8bf147129a81b870e09. `console.clear` overrides the previous content on the screen, so it might cause confusion when users scrolls back.

view details

Renato Vicente

commit sha f99079cbb053d539a4e4048770a8a4154407298a

chore: add issue template config.yml (#5720) Co-authored-by: Haoqun Jiang <haoqunjiang@gmail.com>

view details

Haoqun Jiang

commit sha 1aaa59264235b83cb1e2700ab2cf3aa04b40c907

fix: use fork-ts-checker-webpack-plugin v5 for vue 3 type checking (#5722) Fixes #5712 Note this is a optional dependency so that we don't break compatibility with Node.js v8.

view details

Haoqun Jiang

commit sha 57f4184e4f9ca39b94ba42cc0ef2712748a242a4

fix: make vue-loader-v16 an optional dependency, avoid crashing npm 5 (#5718) fixes #5715

view details

Haoqun Jiang

commit sha d319007ffa702986e68222f8ca07a59bbfc1dbd8

feat: implement a migrator that removes `vue-next` as it's no longer needed (#5725)

view details

push time in 6 days

issue closedvuejs/vue-next

Chaining non-prop 'pre' watchers

Version

3.0.0-rc.5

Reproduction link

https://jsfiddle.net/skirtle/usymq9z0/2/

Steps to reproduce

  1. Open the console.
  2. Click the button.
  3. Note that the chained 'pre' watcher logs after render.

What is expected?

The 'pre' watcher should log before render.

What is actually happening?

The new 'pre' watcher is added to the end of the queue and doesn't run until after rendering.


This is very similar to #1777 except there are no props involved so the fix for that issue doesn't apply.

I have confirmed this problem exists on the latest master.

The example is just for illustration. In a 'real' application the count property might be in store state, making the use of a watcher significantly less contrived.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 6 days

skirtles-code

issue commentvuejs/vue-next

Chaining non-prop 'pre' watchers

Fixed in 3692f2738f5b48c5f116d27e2e3b2b571d28a753

skirtles-code

comment created time in 6 days

push eventvuejs/vue-next

Evan You

commit sha 74a1265feacf62d4f18482f4439d2b487bfd634d

chore: remove debugger

view details

Evan You

commit sha 3692f2738f5b48c5f116d27e2e3b2b571d28a753

refactor(runtime-core/scheduler): dedicated preFlush queue properly fix #1763, #1777, #1781

view details

push time in 6 days

push eventvuejs/vue-next

Evan You

commit sha a0e34cee4a09a14548bf1e78f4a82702e9d40717

fix(watch): exhaust pre-flush watchers + avoid duplicate render by pre-flush watchers close #1777

view details

push time in 7 days

issue closedvuejs/vue-next

Chained 'pre' watchers

Version

master at commit 11ed2103919af46b5d9f573d3fad749ca7eb73f5

The example is using a build of the latest master branch as it relies on a commit that went in yesterday . I'm unclear whether there's a better way to report problems against the latest master.

Reproduction link

https://codesandbox.io/s/holy-sunset-fc8di?file=/index.html

Steps to reproduce

  1. Open the console log.
  2. Click the button.
  3. Note that the watcher for otherValue isn't called until after render, despite being flush: 'pre'.

What is expected?

Changes made by a 'pre' watcher should trigger other 'pre' watchers prior to any rendering.

In Vue 2 this kind of watcher chaining worked fine, see:

https://jsfiddle.net/skirtle/vnkxz35p/9/

What is actually happening?

The second 'pre' watcher isn't called until after render.


Why do you need a watcher that runs before render?

The example is for illustration only. I've explained in greater detail here why this is important in real applications.

Why not use flush: 'sync' on that second watcher?

In this simple example that would work.

But using 'sync' brings its own problems, such as those discussed in #1763. If the watcher were watching a computed property that also depended on props it wouldn't be viable to use 'sync'.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 7 days

skirtles-code

pull request commentvuejs/vue-next

fix(watch): allow handler to be a string

👍

posva

comment created time in 7 days

push eventvuejs/vue-next

Eduardo San Martin Morote

commit sha b5f91ff570244436aa8f579ec3a6fec781d198a7

fix(watch): allow handler to be a string (#1775) fix #1774

view details

push time in 7 days

delete branch vuejs/vue-next

delete branch : fix/1774/handler-as-string

delete time in 7 days

PR merged vuejs/vue-next

fix(watch): allow handler to be a string

Closes #1774

+29 -5

1 comment

2 changed files

posva

pr closed time in 7 days

issue closedvuejs/vue-next

Allow handler as a string for object watch option

Version

3.0.0-rc.5

Reproduction link

https://jsfiddle.net/hcbjno7r/

Steps to reproduce

Create a component with object watch option containing handler as string.

What is expected?

To watch the property and call the handler defined in methods.

What is actually happening?

Error is thrown Uncaught TypeError: raw.handler.bind is not a function.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 7 days

aguingand

Pull request review commentvuejs/vue-next

feat(reactivity): Support returning an array from toRefs

 export function customRef<T>(factory: CustomRefFactory<T>): Ref<T> {   return r as any } -export function toRefs<T extends object>(object: T): ToRefs<T> {-  if (__DEV__ && !isProxy(object)) {+export function toRefs<T extends object | any[]>(object: T): ToRefs<T> {+  if (__DEV__ && !isProxy(object) && !isArray(object)) {

Why is this necessary? It should apply for reactive arrays only.

thecrypticace

comment created time in 7 days

push eventvuejs/vue-next

Evan You

commit sha b0d01e9db9ffe5781cce5a2d62c8552db3d615b0

dx(compiler-core): warn on `<template v-for>` key misplacement Note: the behavior is different from Vue 2. `<template v-for>` are compiled into an array of Fragment vnodes so the key should be placed the `<template>` for v-for to use it for diffing.

view details

push time in 7 days

CommitCommentEvent

push eventvuejs/vue-next

Evan You

commit sha de0c8a7e3e8d2adfae4c4ef992cd5ac6262ca534

fix(compiler-core): v-if key error should only be checking same key on different branches

view details

push time in 7 days

push eventvuejs/vue-next

Evan You

commit sha 11ed2103919af46b5d9f573d3fad749ca7eb73f5

chore: fix tests

view details

push time in 8 days

PR closed vuejs/vue-next

fix(runtime-dom): avoid invoker being overridden.(#1747)

see #1747

When the same method is registered as a listening method by different component, its Invoker is overridden.

+47 -7

1 comment

2 changed files

zhangzhonghe

pr closed time in 8 days

pull request commentvuejs/vue-next

fix(runtime-dom): avoid invoker being overridden.(#1747)

Thanks for the PR - however, I think it's better (and easier) to cache the invoker on the element by event name instead. See 1c967fc4

zhangzhonghe

comment created time in 8 days

push eventvuejs/vue-next

Evan You

commit sha 8d4abc381480ccc4356d2523d9fa35690ae1d76f

chore: unset removed invokers

view details

push time in 8 days

push eventvuejs/vue-next

Evan You

commit sha 1c967fc44b971686d5a0e2811deb2362ec84979f

fix(runtime-dom): fix v-on same computed handler on multiple elements fix #1747

view details

push time in 8 days

issue closedvuejs/vue-next

When the same component is bound to the same event, the event will be problematic

Version

3.0.0-rc.5

Reproduction link

https://jsbin.com/reyalagawo/edit?html,console,output

Steps to reproduce

1、click button1 and button2 will echo noop 2、click toggle disable 3、 click button1 will echo noop,click button2 will echo twice click 4、toggle disable more,button2 will echo ... ... any

What is expected?

when bind dynamic event, can trigger correct event

What is actually happening?

not correct event

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 8 days

tangjinzhou

issue closedvuejs/vue-next

VNode prop keys are not normalized

Version

3.0.0-rc.5

Reproduction link

https://codepen.io/yusufkandemir/pen/abdeYVN?editors=0010

Steps to reproduce

Just run the reproduction.

What is expected?

slot.props(slot is a VNode basically) to contain normalized(naming-wise) prop key and value pairs.

What is actually happening?

It's handled correctly while rendering but it's not the case with direct access. The prop key stays the same as how it was passed initially.


I have changed panel.componentOptions.propsData.imgSrc to panel.props.imgSrc (panel is a child in the default slot) while migrating to Vue 3. I have spotted that it was not working correctly. After doing some tests and debugging, I saw that it's either panel.props.imgSrc or panel.props['img-src']. After further work, I created a reproduction and this issue.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 8 days

yusufkandemir

issue commentvuejs/vue-next

VNode prop keys are not normalized

VNode props are never guaranteed to be normalized, this is not documented behavior. The normalization happens only when the component is receiving the props.

yusufkandemir

comment created time in 8 days

push eventvuejs/vue-next

Yang Mingshan

commit sha b2a91429ede9ea49e4808de2748da19deeb7f335

fix(runtime-core/scheduler): prevent duplicate queue (#1767)

view details

push time in 8 days

pull request commentvuejs/vue-next

fix(reactive): use isExtensible instead of isFrozen

A non-extensible object may still be mutable, and can be observed.

Also Vue 2 uses the same Object.isFrozen check and Vue 3 should keep it consistent.

wujieZ

comment created time in 8 days

PR closed vuejs/vue-next

fix(reactive): use isExtensible instead of isFrozen

use isExtensible instead of isFrozen

+4 -4

1 comment

2 changed files

wujieZ

pr closed time in 8 days

pull request commentvuejs/vue-next

chore(compiler-core): improve X_V_IF_KEY error message

Thanks!

Aurelius333

comment created time in 8 days

push eventvuejs/vue-next

Aurelius333

commit sha 86cdf6694dd25383cf6f9611e0a5d8650e684970

chore(compiler-core): improve X_V_IF_KEY error message (#1757)

view details

push time in 8 days

PR merged vuejs/vue-next

chore(compiler-core): improve X_V_IF_KEY error message

I'm not sure if my new error message is completely accurate, but I think this error message might benefit from more detail. When I saw this message, I wasn't sure what it meant, and I had to search through the GitHub issues to figure out what to do.

+4 -1

0 comment

1 changed file

Aurelius333

pr closed time in 8 days

push eventvuejs/vue-next

Evan You

commit sha f6afe7000efb964355c439b7963087ab8e42d6b1

fix(runtome-core): do not cache property access in beforeCreate hook fix #1756

view details

Evan You

commit sha 0cd98c3040a64df4577d188b9f2221224549a132

fix(runtime-dom): style binding multi value support fix #1759

view details

push time in 8 days

issue closedvuejs/vue-next

Multiple values in: style does not work

Version

3.0.0-rc.5

Reproduction link

https://jsfiddle.net/lucivaldocb/zqvhruse/1/

Steps to reproduce

Inspect the div that contains the message "Hello from Vue.js 3"

What is expected?

The div is expected to contain the style attribute with the value display: flex.

What is actually happening?

The div does not contain any style attributes.


Chrome browser version: Version 84.0.4147.105 (Official Build) (64-bit).

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 8 days

lucivaldo

issue closedvuejs/vue-next

DOM update does not work after accessing data object in the "beforeCreate" hook

Version

3.0.0-rc.5

Reproduction link

https://jsfiddle.net/lucivaldocb/1ju7afcs/3/

Steps to reproduce

Click on the "Reverse message" button.

What is expected?

The message displayed in the browser must be inverted.

What is actually happening?

The message is not updated in the browser (in the DOM). That is, the DOM has not been updated.


  1. The "message" property of the "data" object is updated as expected, but the DOM has not been updated.
  2. When commenting on the code that accesses the property of the "data" object, everything works normally.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 8 days

lucivaldo

issue commentvuejs/vue-next

Non-atomic prop updates

This is expected behavior for sync watcher, since atomic updates is what the scheduler is responsible for (and sync watchers are fired without being scheduled).

However flush: 'pre' watchers should fire before the component updates, so that is fixed in d4c17fb.

skirtles-code

comment created time in 8 days

push eventvuejs/vue-next

Evan You

commit sha d4c17fb48b7880a4e3db6d48f8ab76540a3f59a2

fix(watch): pre-flush watcher watching props should trigger before component update fix #1763

view details

push time in 8 days

issue closedvuejs/vue-next

Non-atomic prop updates

Version

3.0.0-rc.5

Reproduction link

https://jsfiddle.net/skirtle/9ud26a4m/50/

Steps to reproduce

  1. Clicking the button changes optionsIndex, which updates two props on the child.
  2. The child's computed property path is calculated using these two props.
  3. Notice in the console logging that the path property temporarily has an inconsistent value where it uses one of the new prop values and one of the old prop values.

What is actually happening?

The problem is that behind the scenes the child props are updated one at a time and a sync watcher fires immediately, before the other props have been updated.

As a related side note, also notice that the render function gets called twice during update.

What is expected?

I think it would be preferable for updating props to be treated as an atomic transaction, so that they all update before any watchers are triggered.


To preempt some questions/objections/thoughts you may have...

Why do you think this is a bug?

Conceptually the props change in unison, when the parent renders. Updating them one-by-one is an internal implementation detail that shouldn't be exposed via any part of the public API.

Couldn't that be by design?

Maybe. I've not been able to find any public discussion or documentation on this aspect of flush timing. It feels like a major caveat on using flush: 'sync'.

Why are you using flush: 'sync'?

I'm trying to recreate Vue 2 behaviour, where a watch would run before rendering. Using flush: 'pre' won't help when watching a prop.

Why do you want to run a watcher before rendering?

I've provided an explanation in a comment here. Using a computed property instead is not a viable alternative.

Are atomic prop updates even possible?

I believe so, at least from the perspective of what can be observed via the public API.

I think the most difficult part would be handling cases with multiple computed properties. Computed properties that depend on any of the updated props would need to have their cached values invalidated before any other sync watchers are allowed to run.

Why does it render twice?

I did a small amount of debugging on that. I have a theory...

The props are updated by the parent's patch. The child component is not in the flush queue at that point, so the attempt to invalidate its update job won't do anything.

As the first prop is updated the watcher fires and accesses this.path. That causes path to be added as a rendering dependency, even though it isn't used in the render function (which hasn't been called yet).

When the second prop is updated it also updates the computed property. This triggers the path rendering dependency, so the component gets added to the flush queue.

It's at this point that the first call to render occurs, as part of the parent's patch.

The second render call comes from the entry in the queue.

<!-- generated by vue-issues. DO NOT REMOVE -->

closed time in 8 days

skirtles-code

issue closedvitejs/vite

adding es module script in index.html have error >> does not provide an export named 'parse'

<!-- Before you continue...

If you just upgraded Vite and suddenly everything stops working, try opening the Network tab in your browser devtools, tick "disable cache" and refresh the page. -->

Do NOT ignore this template or your issue will have a very high chance to be closed without comment.

Describe the bug

Adding ES Module script in index.html encounter error (index):1 Uncaught SyntaxError: '/@modules/@babel/parser/lib/index.js' does not provide an export named 'parse'

Not sure if this is really the vite issue (maybe the @vue/compiler-core@3.0.0-rc.5) but i just import {mount} from '@vue/test-utils' which has dependency on @vue/compiler-dom@3.0.0-rc.5 which has dependency on @vue/compiler-core@3.0.0-rc.5 which has dependency on @babel/parse dependency

Reproduction

add this following in index.html

<script type="module">
  import {mount} from '@vue/test-utils'
</script>

System Info

  • required vite version: 1.0.0.rc.4
  • required Operating System: MacOSX
  • required Node version: 14
  • Optional:
    • npm/yarn version
    • Installed vue version (from yarn.lock or package-lock.json) - 3.0.0-rc.5
    • Installed @vue/compiler-sfc version - 3.0.0-rc.5

Logs (Optional if provided reproduction)

  1. Run vite or vite build with the --debug flag.
  2. Provide the error log here.

closed time in 8 days

aelbore

issue commentvitejs/vite

adding es module script in index.html have error >> does not provide an export named 'parse'

Please provide an actual reproduction.

aelbore

comment created time in 8 days

issue closedvitejs/vite

Improve file watching by limiting it to files of interest

Is your feature request related to a problem? Please describe. chokidar watches the whole root directory (with a few hardcoded exceptions, see #663 , #664 ). There may be lots of unrelated files in root directory, leading to degraded performance / hogging of system resources.

Describe the solution you'd like Ideally, files should be added to the 'watchlist' as they are imported/referenced/used the first time. Alternatively it would be great if chokidar include/exclude could be configured via options.

Describe alternatives you've considered

  • just accept the fact that dev watches too many files
  • restructure projects to contain less files

closed time in 8 days

dominikg

issue commentvitejs/vite

Improve file watching by limiting it to files of interest

AFAIK chokidar is implemented in a way that isn't really affected by how many actual files are in the watched directory (as long as the system supports native fs events). I don't see an issue here unless there are actual watch performance problems that can be reproduced.

dominikg

comment created time in 8 days

issue closedvitejs/vite

Question: Why is rollup needed?

Thanks so much for this great and innovative project.

I'm trying to better understand how Rollup fits into the individual workflows (dev server / production build) and whether it's needed at all in vite with esbuild plugins on the horizon?

Note: There's nothing wrong with Rollup and in fact I'm happily using Rollup in my projects. However the JS ecosystem is moving fast and I wanted to make sure I have a solid understanding of the reasoning behind each tool and how they work together.

Maybe some of this information could also be added to the readme/docs.

closed time in 8 days

schickling

issue commentvitejs/vite

Question: Why is rollup needed?

  1. As of now, Rollup is used for three purposes in Vite:

    1. Pre-bundling CommonJS dependencies. This includes CommonJS modules (which are converted into ESM so they work with native browser ESM).

    2. Pre-bundling pure-ESM dependencies that have large amount of internal modules. e.g. lodash-es which has 600+ modules, and pre-bundling squashes it into a single request.

    3. Bundling for the production build. Bundling is still needed for production because deploying native ESM over the network typically results in worse performance due to the request waterfalls it creates (Proper HTTP/2 push is also very tricky to get right and many users don't have that level of control over their deployment environment).

  2. ESBuild plugins are definitely something to watch, but as of now it's nowhere near the maturity of Rollup in terms of bundling an actual application. Note that bundling a full application is a completely different problem from bundling pure-js libs. ESBuild is pretty much just starting to get into this area, while Rollup has a solid plugin ecosystem that is production ready today. There are many challenging issues like code-splitting (especially with multi-entry builds), tree-shaking, and how plugins can work nicely with these features that Rollup has already solved, but are still WIP in esbuild. It would obviously be nice if esbuild eventually solves all of these in the future, but it will take quite some time for it to reach feature parity with Rollup.

schickling

comment created time in 8 days

push eventvuejs/vue-cli

Booker Zhao

commit sha 544e0547054947c471fe9d71a2b967e57f5f3111

docs: add cloudbase deploy doc (#5741)

view details

push time in 8 days

more