hypejunction / vue-boot
Vue bootstrap for Elgg
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 24
Type:elgg-plugin
pkg:composer/hypejunction/vue-boot
Requires
- php: >=7.0
- composer/installers: ~1.0
- dev-master
- 1.0.0
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/express-4.18.2
- dev-dependabot/npm_and_yarn/qs-6.5.3
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-and-webpack-cli-1.4.2
- dev-dependabot/npm_and_yarn/eventsource-1.1.1
- dev-dependabot/npm_and_yarn/grunt-1.5.3
- dev-dependabot/npm_and_yarn/url-parse-1.5.10
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/ajv-6.12.6
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/ws-6.2.2
- dev-dependabot/npm_and_yarn/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/lodash-4.17.21
- dev-dependabot/npm_and_yarn/handlebars-4.7.7
- dev-dependabot/npm_and_yarn/underscore-1.12.1
- dev-dependabot/npm_and_yarn/ssri-6.0.2
- dev-dependabot/npm_and_yarn/y18n-4.0.1
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/websocket-extensions-0.1.4
- dev-dependabot/npm_and_yarn/acorn-6.4.1
This package is auto-updated.
Last update: 2025-10-04 18:09:13 UTC
README
Provides a generic bootstrap for using Vue components inside Elgg.
Setup
Inside your plugin create:
package.json
{
"private": true,
"scripts": {
"build": "npm run production && rm ./views/default/mix-manifest.json && php ../../elgg-cli flush",
"production": "npm run components:parse && cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"components:parse": "node node_modules/@hypejunction/vue-scanner/cli/scan.js"
},
"dependencies": {
"cross-env": "^5.2.0",
"global": "^4.4.0",
"laravel-mix": "^4.1.2",
"lodash.camelcase": "^4.3.0",
"vue": "^2.6.10",
"vue-template-compiler": "^2.6.10"
},
"devDependencies": {
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@hypejunction/vue-scanner": "^1.1.3"
},
"vue-scanner": {
"src": {
"components": {
"dirs": [
"./src/PLUGIN_NAME/components/"
],
"async": false
}
},
"target": {
"js": "./src/PLUGIN_NAME/components.js",
"json": "./src/PLUGIN_NAME/components.json"
},
"chunks": true,
"requestChunks": true,
"chunkPrefix": "PLUGIN_NAME/"
}
}
webpack.mix.js
let mix = require('laravel-mix'); mix.setPublicPath('views/default/') .setResourceRoot('views/default/') .js('src/PLUGIN_NAME/init.js', 'views/default/PLUGIN_NAME/init.js'); mix.webpackConfig({ externals: { elgg: 'elgg', vue: 'vue', }, optimization: { splitChunks: false, }, output: { libraryTarget: 'umd', publicPath: `/mod/PLUGIN_NAME/views/default/`, } });
src/PLUGIN_NAME/init.js
Inside your init.js you can use ES6 to import Vue, register your components, setup your Vue extensions etc.
import Vue from 'vue'; // Vue.component(); import './components';
The above setup makes it easier to work with components, using vue-scanner, which will automatically register all the components for you. You will just need to import the components.js in your init.js.
Then run yarn build - this will build your components into views/default, so you can use them inside your templates.
You can then add these components into your plugin's views:
echo \hypeJunction\VueBoot\Vue::instance()->render('MyComponent', [ 'params' => $entity->getParams(), // list all props to pass to the component ], [ 'PLUGIN_NAME/init', // load the init script ]);