Install this package in any Vue 2 or Vue 3 project to send messages to the Ray app. It also includes a Vuex plugin to monitor changes to the Vuex state.
Install with npm:
npm install vue-ray
or yarn:
yarn add vue-ray
When using in a Vue 3.x project (the default), import the package:
import { createApp } from 'vue';
import App from './App.vue';
// as an es module import:
import { RayPlugin } from 'vue-ray';
// or as a commonjs import:
const { RayPlugin } = require('vue-ray');
const app = createApp(App);
app.use(RayPlugin, {
interceptErrors: true,
port: 23500,
showComponentEvents: ['created', 'mounted'],
nodeRaySettings: {
interceptConsoleLog: true,
},
});
When using in a Vue 2.x project, import the 'vue2' variant:
const Vue = require('vue');
// as an es module import:
import { RayPlugin } from 'vue-ray/vue2';
// or as a commonjs import:
const { RayPlugin } = require('vue-ray/vue2');
Vue.use(RayPlugin, {
interceptErrors: true,
host: '127.0.0.1',
showComponentEvents: ['mounted'],
nodeRaySettings: {
interceptConsoleLog: false,
},
});
Name | Type | Default | Description |
---|---|---|---|
host |
string |
localhost |
host to connect to the Ray app on |
scheme |
string |
http |
URI scheme to use to connect to host |
interceptErrors |
boolean |
false |
send Vue errors to Ray |
port |
number |
23517 |
port to connect to the Ray app on |
showComponentEvents |
string[] |
[] |
display component events in Ray, see below for possible values |
nodeRaySettings |
object |
{} |
pass additional settings for node-ray (reference) |
Component lifecycle events can be sent to Ray using the showComponentEvents
plugin option (array
).
Use any of the following values with this option:
before-create
before-mount
created
mounted
unmounted
updated
Once the plugin is installed, you may access the ray()
method on this
as this.$ray()
.
See the node-ray reference for a complete list of available methods.
Name | Description |
---|---|
this.$ray().data() |
show the component data |
this.$ray().props() |
show the component props |
this.$ray().ref(name) |
show the innerHTML of a named ref |
this.$ray().track(name) |
display changes to a component's data variable |
this.$ray().untrack(name) |
stop displaying changes to a component's data variable |
Changes to any component's data variables can be tracked and displayed in real-time using the track(name)
method.
<script>
export default {
props: ['title'],
data() {
return {
one: 100,
two: 22,
};
},
created() {
this.$ray().data();
this.$ray().track('one');
},
mounted() {
setInterval(() => {
this.one += 3;
}, 4000);
},
};
</script>
<template>
<div class="flex-col border-r border-gray-200 bg-white overflow-y-auto w-100">
<div class="about">
<h1>{{ title }}</h1>
<a @click="sendToRay()">send ref to ray</a><br>
<a @click="increment()">increment data var</a><br>
</div>
<div ref="div1" class="w-full flex flex-wrap">
<div ref="div1a" class="w-4/12 inline-flex">{{ one }}</div>
<div ref="div1b" class="w-4/12 inline-flex">{{ two }}</divr>
</div>
</div>
</template>
<script>
export default {
props: ['title'],
data() {
return {
one: 100,
two: 22,
};
},
created() {
this.$ray().data();
this.$ray().track('one');
},
methods: {
sendToRay() {
this.$ray().ref('div1');
},
increment() {
this.one += 3;
}
}
};
</script>
Use the interceptErrors
option to intercept errors and send them to Ray:
app.use(RayPlugin, { interceptErrors: true });
Use the interceptErrors
option to intercept errors and send them to Ray:
Vue.use(RayPlugin, { interceptErrors: true });
In either a Vue 2.x or 3.x project, use the vue-ray
vuex plugin - it can track the vuex state, log mutations, and log actions.
To use it, import the RayVuexPlugin
function from vue-ray
, and pass the result of the function to the plugins
property on your Vuex store:
// ...
import { RayVuexPlugin } from 'vue-ray'; // for both vue 2 and vue 3
// ...
const storeObj = {
state: {
one: 11,
two: 22,
},
mutations: {
incrementOne(state) {
state.one += 1;
},
incrementTwo(state) {
state.two += 2;
},
},
actions: {},
modules: {},
plugins: [
RayVuexPlugin({
trackState: true,
logMutations: true,
trackingOptions: {
propNames: ['on*'],
}
}),
],
};
// Vue 3:
export default createStore(storeObj);
// Vue 2:
export default new Vuex.Store(storeObj);
Name | Type | Description |
---|---|---|
trackState |
boolean |
track the data in the store's state |
logMutations |
boolean |
log all fired mutations to Ray |
logActions |
boolean |
log all fired actions to Ray |
loggedMutationColor |
string |
send logged mutations with the specified Ray color |
loggedActionColor |
string |
send logged actions with the specified Ray color |
trackingOptions |
object |
see "tracking options" section for more info |
Valid color names are blue
, gray
, green
, orange
, purple
, red
, and none
.
The trackingOptions
definition is as follows:
trackingOptions?: {
moduleNames?: string[];
propNames?: string[];
};
The propNames
is an array of wildcard patterns that will match stored data property names when tracking store state; for example, a value of ['f*']
would match store data properties named foo
and fab
but not dog
.
The moduleNames
is also an array of wildcard patterns but will match module names and module data property names, such as ['mymod.*']
, which would match all properties in the mymod
store.
The default value is ['*']
, meaning all modules and properties match.
npm install
npm run test
npm run build:all
vue-ray
uses Jest for unit tests. To run the test suite:
npm run test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.