├── .gitignore ├── .s2i └── environment ├── LICENSE ├── README.md ├── app ├── .DS_Store ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-35.pyc │ ├── admin.cpython-35.pyc │ ├── models.cpython-35.pyc │ ├── urls.cpython-35.pyc │ └── views.cpython-35.pyc ├── admin.py ├── apps.py ├── migrations │ ├── __init__.py │ └── __pycache__ │ │ └── __init__.cpython-35.pyc ├── models.py ├── templates │ └── index.html ├── tests.py ├── urls.py ├── views.py └── vueapp │ ├── .babelrc │ ├── .editorconfig │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── utils.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js │ ├── config │ ├── dev.env.js │ ├── index.js │ ├── prod.env.js │ └── test.env.js │ ├── dist │ └── static │ │ ├── app-4875277d6c39917d3837.js │ │ ├── app-4875277d6c39917d3837.js.map │ │ ├── app-943f500650715913d4968b4f5e6c1a60.css │ │ ├── app-943f500650715913d4968b4f5e6c1a60.css.map │ │ ├── manifest-1a5cb24ae675b447d4fa.js │ │ ├── manifest-1a5cb24ae675b447d4fa.js.map │ │ ├── vendor-9a27f43c36e8aef8b4ef.js │ │ └── vendor-9a27f43c36e8aef8b4ef.js.map │ ├── index.html │ ├── package.json │ ├── src │ ├── App.vue │ ├── assets │ │ ├── django-logo.png │ │ └── vue-logo.png │ ├── components │ │ └── Hello.vue │ └── main.js │ ├── static │ └── .gitkeep │ ├── test │ ├── e2e │ │ ├── custom-assertions │ │ │ └── elementCount.js │ │ ├── nightwatch.conf.js │ │ ├── runner.js │ │ └── specs │ │ │ └── test.js │ └── unit │ │ ├── .eslintrc │ │ ├── index.js │ │ ├── karma.conf.js │ │ └── specs │ │ └── Hello.spec.js │ └── webpack-stats.json ├── config.py ├── manage.py ├── project ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-35.pyc │ ├── settings.cpython-35.pyc │ ├── urls.cpython-35.pyc │ └── wsgi.cpython-35.pyc ├── settings.py ├── settings_deploy.py ├── urls.py └── wsgi.py └── requirements.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | develop-eggs/ 13 | # dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # PyInstaller 27 | # Usually these files are written by a python script from a template 28 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 29 | *.manifest 30 | *.spec 31 | 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | 36 | # Unit test / coverage reports 37 | htmlcov/ 38 | .tox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *,cover 45 | .hypothesis/ 46 | 47 | # Translations 48 | *.mo 49 | *.pot 50 | 51 | # Django stuff: 52 | *.log 53 | local_settings.py 54 | 55 | # Flask stuff: 56 | instance/ 57 | .webassets-cache 58 | 59 | # Scrapy stuff: 60 | .scrapy 61 | 62 | # Sphinx documentation 63 | docs/_build/ 64 | 65 | # PyBuilder 66 | target/ 67 | 68 | # IPython Notebook 69 | .ipynb_checkpoints 70 | 71 | # pyenv 72 | .python-version 73 | 74 | # celery beat schedule file 75 | celerybeat-schedule 76 | 77 | # dotenv 78 | .env 79 | 80 | # virtualenv 81 | venv/ 82 | ENV/ 83 | 84 | # Spyder project settings 85 | .spyderproject 86 | 87 | # Rope project settings 88 | .ropeproject 89 | 90 | # Django 91 | secrets.py 92 | db.sqlite3 93 | 94 | # JavaScript 95 | node_modules/ 96 | # webpack-stats.json 97 | 98 | # Do not store .js build files from static 99 | 100 | # MacOS 101 | .DS_Store -------------------------------------------------------------------------------- /.s2i/environment: -------------------------------------------------------------------------------- 1 | APP_MODULE=project.wsgi 2 | APP_CONFIG=config.py 3 | DISABLE_MIGRATE=1 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Dylan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | !!! Disclaimer: This package is not maintained and therefore is not recommended for production use. It is also recommended not to deploy a JavaScript application through Django. Please refer to load balancing with nginx or ELB/ALB and storing files on S3 or similar services. 2 | 3 | # vue-django-webpack 4 | 5 |

6 | Vue.js and Django Web Application 7 |

8 | 9 |

10 | 11 | 12 |

13 | 14 | - Use of Vue.js in component form 15 | - Webpack building the JavaScript and CSS portions of the application 16 | - Django serving builds with django-webpack-loader 17 | 18 | The advantage to this over a pure Vue.js application are those niceties included in Django's core library such as database managment and URL routing. This also includes the ability to add third party applications such as, the Django REST Framework, quickly and painfree. 19 | 20 | Once a bundle has been created with Webpack, it can easily be served with Django's django.contrib.staticfiles app. 21 | 22 | ##Installation 23 | Setup a new Python 3 virtualenv and install the pip and npm requirements. 24 | ```bash 25 | git clone https://github.com/djstein/vue-django-webpack.git 26 | cd vue-django-webpack 27 | 28 | # Virtual environment 29 | virtualenv -p python3 venv 30 | source venv/bin/activate 31 | 32 | pip install -r requirements.txt 33 | npm install 34 | ``` 35 | 36 | ## Development 37 | During development it is useful to access the hot-load features without the need to rebuild the application. 38 | Do so by running Django in one terminal and the node server in another. 39 | ```bash 40 | # Run Django webserver 41 | python manage.py runserver 42 | 43 | # Run node webserver 44 | npm run dev 45 | ``` 46 | Any changes made to `app/vueapp/src/` will now be seen automatically in development. Feel free to add components / new pages / etc. 47 | 48 | ## Webpack Build 49 | ### Local 50 | To use the application without the use of the node server, use webpack to create a build. This will automatically switch the path needed in webpack-stats.json to reprsent the local build development bundles (.js and .css), with no changes to Django for local development. 51 | ```bash 52 | # Local Build 53 | npm run build 54 | ``` 55 | Django can continue to run while the build is recreated, however it is advised to stop the webserver and clear the browswer cache when creating new builds. 56 | ```bash 57 | # Run Django webserver 58 | python manage.py runserver 59 | ``` 60 | 61 | ### Production 62 | **Production Instructions Are Not Complete** 63 | 64 | For production builds, using build-proudction will pack and UglifyJS the application. IT IS RECOMMENDED TO STILL COMPLETE THE [DJANGO](https://docs.djangoproject.com/en/dev/howto/deployment/checklist/) AND [VUE.JS](https://vuejs.org/v2/guide/deployment.html) PRODUCTION DOCUMENTATION BEFORE DEPLOYING. 65 | ```bash 66 | # Production Build 67 | npm run build-production 68 | ``` 69 | 70 | ## Sources 71 | 72 | These resources were heavily referenced: 73 | 74 | https://github.com/vuejs-templates/webpack/tree/master/template 75 | 76 | https://github.com/owais/django-webpack-loader/tree/master/examples 77 | 78 | ## Contributions 79 | Please feel free to pull, fork, or add suggestions 80 | -------------------------------------------------------------------------------- /app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/.DS_Store -------------------------------------------------------------------------------- /app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/__init__.py -------------------------------------------------------------------------------- /app/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /app/__pycache__/admin.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/__pycache__/admin.cpython-35.pyc -------------------------------------------------------------------------------- /app/__pycache__/models.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/__pycache__/models.cpython-35.pyc -------------------------------------------------------------------------------- /app/__pycache__/urls.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/__pycache__/urls.cpython-35.pyc -------------------------------------------------------------------------------- /app/__pycache__/views.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/__pycache__/views.cpython-35.pyc -------------------------------------------------------------------------------- /app/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /app/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AppConfig(AppConfig): 5 | name = 'app' 6 | -------------------------------------------------------------------------------- /app/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/migrations/__init__.py -------------------------------------------------------------------------------- /app/migrations/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/migrations/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /app/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /app/templates/index.html: -------------------------------------------------------------------------------- 1 | {% load render_bundle from webpack_loader %} 2 | 3 | 4 | 5 | 6 | Vue.js + Django 7 | {% if debug == True %} 8 | {% render_bundle 'app' 'css' %} 9 | {% endif %} 10 | 11 | 12 | 13 |
14 | {% if debug == False %} 15 | 16 | {% else%} 17 | {% render_bundle 'manifest' 'js' %} 18 | {% render_bundle 'vendor' 'js' %} 19 | {% render_bundle 'app' 'js' %} 20 | {% endif %} 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /app/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import url 2 | from app.views import home 3 | 4 | urlpatterns = [ 5 | url(r"^$", home, name="home"), 6 | ] 7 | -------------------------------------------------------------------------------- /app/views.py: -------------------------------------------------------------------------------- 1 | import django.views.generic 2 | 3 | class Home(django.views.generic.TemplateView): 4 | template_name = "index.html" 5 | home = Home.as_view() -------------------------------------------------------------------------------- /app/vueapp/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false, 5 | "env": { 6 | "test": { 7 | "plugins": [ "istanbul" ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/vueapp/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /app/vueapp/.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /app/vueapp/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: 'babel-eslint', 4 | parserOptions: { 5 | sourceType: 'module' 6 | }, 7 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 8 | extends: 'standard', 9 | // required to lint *.vue files 10 | plugins: [ 11 | 'html' 12 | ], 13 | // add your custom rules here 14 | 'rules': { 15 | // allow paren-less arrow functions 16 | 'arrow-parens': 0, 17 | // allow async-await 18 | 'generator-star-spacing': 0, 19 | // allow debugger during development 20 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/vueapp/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | # dist/ 4 | npm-debug.log 5 | test/unit/coverage 6 | test/e2e/reports 7 | selenium-debug.log 8 | -------------------------------------------------------------------------------- /app/vueapp/README.md: -------------------------------------------------------------------------------- 1 | # vueapp 2 | 3 | > A Vue.js project 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # run unit tests 18 | npm run unit 19 | 20 | # run e2e tests 21 | npm run e2e 22 | 23 | # run all tests 24 | npm test 25 | ``` 26 | 27 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 28 | -------------------------------------------------------------------------------- /app/vueapp/build/build.js: -------------------------------------------------------------------------------- 1 | // https://github.com/shelljs/shelljs 2 | require('./check-versions')() 3 | require('shelljs/global') 4 | env.NODE_ENV = 'production' 5 | 6 | var path = require('path') 7 | var config = require('../config') 8 | var ora = require('ora') 9 | var webpack = require('webpack') 10 | var webpackConfig = require('./webpack.prod.conf') 11 | 12 | console.log( 13 | ' Tip:\n' + 14 | ' Built files are meant to be served over an HTTP server.\n' + 15 | ' Opening index.html over file:// won\'t work.\n' 16 | ) 17 | 18 | var spinner = ora('building for production...') 19 | spinner.start() 20 | 21 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 22 | rm('-rf', assetsPath) 23 | mkdir('-p', assetsPath) 24 | cp('-R', 'static/*', assetsPath) 25 | 26 | webpack(webpackConfig, function (err, stats) { 27 | spinner.stop() 28 | if (err) throw err 29 | process.stdout.write(stats.toString({ 30 | colors: true, 31 | modules: false, 32 | children: false, 33 | chunks: false, 34 | chunkModules: false 35 | }) + '\n') 36 | }) 37 | -------------------------------------------------------------------------------- /app/vueapp/build/check-versions.js: -------------------------------------------------------------------------------- 1 | var semver = require('semver') 2 | var chalk = require('chalk') 3 | var packageConfig = require('../package.json') 4 | var exec = function (cmd) { 5 | return require('child_process') 6 | .execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | { 16 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/vueapp/build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?path=http://localhost:8080/__webpack_hmr&noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /app/vueapp/build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | var config = require('../config') 3 | if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 4 | var path = require('path') 5 | var express = require('express') 6 | var webpack = require('webpack') 7 | var opn = require('opn') 8 | var proxyMiddleware = require('http-proxy-middleware') 9 | var webpackConfig = process.env.NODE_ENV === 'testing' 10 | ? require('./webpack.prod.conf') 11 | : require('./webpack.dev.conf') 12 | 13 | // default port where dev server listens for incoming traffic 14 | var port = process.env.PORT || config.dev.port 15 | // Define HTTP proxies to your custom API backend 16 | // https://github.com/chimurai/http-proxy-middleware 17 | var proxyTable = config.dev.proxyTable 18 | 19 | var app = express() 20 | var compiler = webpack(webpackConfig) 21 | 22 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 23 | publicPath: webpackConfig.output.publicPath, 24 | quiet: true 25 | }) 26 | 27 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 28 | log: () => {} 29 | }) 30 | // force page reload when html-webpack-plugin template changes 31 | compiler.plugin('compilation', function (compilation) { 32 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 33 | hotMiddleware.publish({ action: 'reload' }) 34 | cb() 35 | }) 36 | }) 37 | 38 | // proxy api requests 39 | Object.keys(proxyTable).forEach(function (context) { 40 | var options = proxyTable[context] 41 | if (typeof options === 'string') { 42 | options = { target: options } 43 | } 44 | app.use(proxyMiddleware(context, options)) 45 | }) 46 | 47 | // handle fallback for HTML5 history API 48 | app.use(require('connect-history-api-fallback')()) 49 | 50 | // serve webpack bundle output 51 | app.use(devMiddleware) 52 | 53 | // enable hot-reload and state-preserving 54 | // compilation error display 55 | app.use(hotMiddleware) 56 | 57 | // serve pure static assets 58 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 59 | app.use(staticPath, express.static('./static')) 60 | 61 | var uri = 'http://localhost:' + port 62 | 63 | devMiddleware.waitUntilValid(function () { 64 | console.log('> Listening at ' + uri + '\n') 65 | }) 66 | 67 | module.exports = app.listen(port, function (err) { 68 | if (err) { 69 | console.log(err) 70 | return 71 | } 72 | 73 | // // when env is testing, don't need open it 74 | // if (process.env.NODE_ENV !== 'testing') { 75 | // opn(uri) 76 | // } 77 | }) 78 | -------------------------------------------------------------------------------- /app/vueapp/build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | // Extract CSS when that option is specified 29 | // (which is the case during production build) 30 | if (options.extract) { 31 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 32 | } else { 33 | return ['vue-style-loader', sourceLoader].join('!') 34 | } 35 | } 36 | 37 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 38 | return { 39 | css: generateLoaders(['css']), 40 | postcss: generateLoaders(['css']), 41 | less: generateLoaders(['css', 'less']), 42 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 43 | scss: generateLoaders(['css', 'sass']), 44 | stylus: generateLoaders(['css', 'stylus']), 45 | styl: generateLoaders(['css', 'stylus']) 46 | } 47 | } 48 | 49 | // Generate loaders for standalone style files (outside of .vue) 50 | exports.styleLoaders = function (options) { 51 | var output = [] 52 | var loaders = exports.cssLoaders(options) 53 | for (var extension in loaders) { 54 | var loader = loaders[extension] 55 | output.push({ 56 | test: new RegExp('\\.' + extension + '$'), 57 | loader: loader 58 | }) 59 | } 60 | return output 61 | } 62 | -------------------------------------------------------------------------------- /app/vueapp/build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var projectRoot = path.resolve(__dirname, '../') 5 | 6 | var env = process.env.NODE_ENV 7 | // check env & config/index.js to decide whether to enable CSS source maps for the 8 | // various preprocessor loaders added to vue-loader at the end of this file 9 | var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) 10 | var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap) 11 | var useCssSourceMap = cssSourceMapDev || cssSourceMapProd 12 | 13 | module.exports = { 14 | entry: { 15 | app: './src/main.js' 16 | }, 17 | output: { 18 | path: config.build.assetsRoot, 19 | publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, 20 | filename: '[name].js' 21 | }, 22 | resolve: { 23 | extensions: ['', '.js', '.vue', '.json'], 24 | fallback: [path.join(__dirname, '../node_modules')], 25 | alias: { 26 | 'vue$': 'vue/dist/vue.common.js', 27 | 'src': path.resolve(__dirname, '../src'), 28 | 'assets': path.resolve(__dirname, '../src/assets'), 29 | 'components': path.resolve(__dirname, '../src/components') 30 | } 31 | }, 32 | resolveLoader: { 33 | fallback: [path.join(__dirname, '../node_modules')] 34 | }, 35 | module: { 36 | preLoaders: [ 37 | { 38 | test: /\.vue$/, 39 | loader: 'eslint', 40 | include: [ 41 | path.join(projectRoot, 'src') 42 | ], 43 | exclude: /node_modules/ 44 | }, 45 | { 46 | test: /\.js$/, 47 | loader: 'eslint', 48 | include: [ 49 | path.join(projectRoot, 'src') 50 | ], 51 | exclude: /node_modules/ 52 | } 53 | ], 54 | loaders: [ 55 | { 56 | test: /\.vue$/, 57 | loader: 'vue' 58 | }, 59 | { 60 | test: /\.js$/, 61 | loader: 'babel', 62 | include: [ 63 | path.join(projectRoot, 'src') 64 | ], 65 | exclude: /node_modules/ 66 | }, 67 | { 68 | test: /\.json$/, 69 | loader: 'json' 70 | }, 71 | { 72 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 73 | loader: 'url', 74 | query: { 75 | limit: 10000, 76 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 77 | } 78 | }, 79 | { 80 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 81 | loader: 'url', 82 | query: { 83 | limit: 10000, 84 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 85 | } 86 | } 87 | ] 88 | }, 89 | eslint: { 90 | formatter: require('eslint-friendly-formatter') 91 | }, 92 | vue: { 93 | loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }), 94 | postcss: [ 95 | require('autoprefixer')({ 96 | browsers: ['last 2 versions'] 97 | }) 98 | ] 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /app/vueapp/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var webpack = require('webpack') 3 | var merge = require('webpack-merge') 4 | var utils = require('./utils') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrors = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // eval-source-map is faster for development 19 | devtool: '#eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.optimize.OccurrenceOrderPlugin(), 26 | new webpack.HotModuleReplacementPlugin(), 27 | new webpack.NoErrorsPlugin(), 28 | // https://github.com/ampedandwired/html-webpack-plugin 29 | new HtmlWebpackPlugin({ 30 | filename: 'index.html', 31 | template: 'index.html', 32 | inject: true 33 | }), 34 | new FriendlyErrors() 35 | ] 36 | }) 37 | -------------------------------------------------------------------------------- /app/vueapp/build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var BundleTracker = require('webpack-bundle-tracker') 10 | 11 | var env = process.env.NODE_ENV === 'testing' 12 | ? require('../config/test.env') 13 | : config.build.env 14 | 15 | var webpackConfig = merge(baseWebpackConfig, { 16 | module: { 17 | loaders: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true }) 18 | }, 19 | devtool: config.build.productionSourceMap ? '#source-map' : false, 20 | output: { 21 | path: config.build.assetsRoot, 22 | // publicPath: 'http://localhost:8000/', // Tell django to use this URL to load packages and not use STATIC_URL + bundle_name 23 | publicPath: 'http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/', // Tell django to use this URL to load packages and not use STATIC_URL + bundle_name 24 | filename: utils.assetsPath('[name]-[chunkhash].js'), 25 | chunkFilename: utils.assetsPath('[id]-[chunkhash].js') 26 | }, 27 | vue: { 28 | loaders: utils.cssLoaders({ 29 | sourceMap: config.build.productionSourceMap, 30 | extract: true 31 | }) 32 | }, 33 | plugins: [ 34 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 35 | new webpack.DefinePlugin({ 36 | 'process.env': env 37 | }), 38 | new webpack.optimize.UglifyJsPlugin({ 39 | compress: { 40 | warnings: false 41 | } 42 | }), 43 | new webpack.optimize.OccurrenceOrderPlugin(), 44 | // extract css into its own file 45 | new ExtractTextPlugin(utils.assetsPath('[name]-[contenthash].css')), 46 | 47 | // new bundle to track stats on the webpackk build 48 | new BundleTracker({ 49 | filename: './webpack-stats.json' 50 | }), 51 | 52 | // generate dist index.html with correct asset hash for caching. 53 | // you can customize output by editing /index.html 54 | // see https://github.com/ampedandwired/html-webpack-plugin 55 | // new HtmlWebpackPlugin({ 56 | // filename: process.env.NODE_ENV === 'testing' 57 | // ? 'index.html' 58 | // : config.build.index, 59 | // template: 'index.html', 60 | // inject: true, 61 | // minify: { 62 | // removeComments: true, 63 | // collapseWhitespace: true, 64 | // removeAttributeQuotes: true 65 | // // more options: 66 | // // https://github.com/kangax/html-minifier#options-quick-reference 67 | // }, 68 | // // necessary to consistently work with multiple chunks via CommonsChunkPlugin 69 | // chunksSortMode: 'dependency' 70 | // }), 71 | // split vendor js into its own file 72 | new webpack.optimize.CommonsChunkPlugin({ 73 | name: 'vendor', 74 | minChunks: function (module, count) { 75 | // any required modules inside node_modules are extracted to vendor 76 | return ( 77 | module.resource && 78 | /\.js$/.test(module.resource) && 79 | module.resource.indexOf( 80 | path.join(__dirname, '../node_modules') 81 | ) === 0 82 | ) 83 | } 84 | }), 85 | // extract webpack runtime and module manifest to its own file in order to 86 | // prevent vendor hash from being updated whenever app bundle is updated 87 | new webpack.optimize.CommonsChunkPlugin({ 88 | name: 'manifest', 89 | chunks: ['vendor'] 90 | }), 91 | ] 92 | }) 93 | 94 | if (config.build.productionGzip) { 95 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 96 | 97 | webpackConfig.plugins.push( 98 | new CompressionWebpackPlugin({ 99 | asset: '[path].gz[query]', 100 | algorithm: 'gzip', 101 | test: new RegExp( 102 | '\\.(' + 103 | config.build.productionGzipExtensions.join('|') + 104 | ')$' 105 | ), 106 | threshold: 10240, 107 | minRatio: 0.8 108 | }) 109 | ) 110 | } 111 | 112 | module.exports = webpackConfig 113 | -------------------------------------------------------------------------------- /app/vueapp/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /app/vueapp/config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | // index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static/', 10 | assetsPublicPath: '', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'] 18 | }, 19 | dev: { 20 | env: require('./dev.env'), 21 | port: 8080, 22 | assetsSubDirectory: 'static', 23 | assetsPublicPath: '/', 24 | proxyTable: {}, 25 | // CSS Sourcemaps off by default because relative paths are "buggy" 26 | // with this option, according to the CSS-Loader README 27 | // (https://github.com/webpack/css-loader#sourcemaps) 28 | // In our experience, they generally work as expected, 29 | // just be aware of this issue when enabling this option. 30 | cssSourceMap: false 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/vueapp/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /app/vueapp/config/test.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var devEnv = require('./dev.env') 3 | 4 | module.exports = merge(devEnv, { 5 | NODE_ENV: '"testing"' 6 | }) 7 | -------------------------------------------------------------------------------- /app/vueapp/dist/static/app-4875277d6c39917d3837.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([1,0],[function(t,s,W){"use strict";function e(t){return t&&t.__esModule?t:{default:t}}var r=W(11),i=e(r),g=W(7),a=e(g);new i.default({el:"#app",template:"",components:{App:a.default}})},function(t,s,W){"use strict";function e(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(s,"__esModule",{value:!0});var r=W(8),i=e(r);s.default={name:"app",components:{Hello:i.default}}},function(t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.default={name:"hello",data:function(){return{msg:"Welcome to Your Vue.js + Django App"}}}},function(t,s){},function(t,s){},function(t,s){t.exports="data:image/png;base64,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"},function(t,s){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd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"},function(t,s,W){var e,r;W(3),e=W(1);var i=W(9);r=e=e||{},"object"!=typeof e.default&&"function"!=typeof e.default||(r=e=e.default),"function"==typeof r&&(r=r.options),r.render=i.render,r.staticRenderFns=i.staticRenderFns,t.exports=e},function(t,s,W){var e,r;W(4),e=W(2);var i=W(10);r=e=e||{},"object"!=typeof e.default&&"function"!=typeof e.default||(r=e=e.default),"function"==typeof r&&(r=r.options),r.render=i.render,r.staticRenderFns=i.staticRenderFns,r._scopeId="data-v-bcbf98c6",t.exports=e},function(t,s,W){t.exports={render:function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{attrs:{id:"app"}},[e("img",{attrs:{src:W(6)}}),t._v(" "),e("h1",[t._v("+")]),t._v(" "),e("img",{attrs:{id:"django",src:W(5)}}),t._v(" "),e("hello")],1)},staticRenderFns:[]}},function(t,s){t.exports={render:function(){var t=this,s=t.$createElement,W=t._self._c||s;return W("div",{staticClass:"hello"},[W("h1",[t._v(t._s(t.msg))]),t._v(" "),W("h2",[t._v("Essential Links")]),t._v(" "),t._m(0),t._v(" "),W("h2",[t._v("Ecosystem")]),t._v(" "),t._m(1)])},staticRenderFns:[function(){var t=this,s=t.$createElement,W=t._self._c||s;return W("ul",[W("li",[W("a",{attrs:{href:"https://vuejs.org",target:"_blank"}},[t._v("Core Docs")])]),t._v(" "),W("li",[W("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank"}},[t._v("Forum")])]),t._v(" "),W("li",[W("a",{attrs:{href:"https://gitter.im/vuejs/vue",target:"_blank"}},[t._v("Gitter Chat")])]),t._v(" "),W("li",[W("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank"}},[t._v("Twitter")])]),t._v(" "),W("br"),t._v(" "),W("li",[W("a",{attrs:{href:"http://vuejs-templates.github.io/webpack/",target:"_blank"}},[t._v("Docs for This Template")])])])},function(){var t=this,s=t.$createElement,W=t._self._c||s;return W("ul",[W("li",[W("a",{attrs:{href:"http://router.vuejs.org/",target:"_blank"}},[t._v("vue-router")])]),t._v(" "),W("li",[W("a",{attrs:{href:"http://vuex.vuejs.org/",target:"_blank"}},[t._v("vuex")])]),t._v(" "),W("li",[W("a",{attrs:{href:"http://vue-loader.vuejs.org/",target:"_blank"}},[t._v("vue-loader")])]),t._v(" "),W("li",[W("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank"}},[t._v("awesome-vue")])])])}]}}]); 2 | //# sourceMappingURL=app-4875277d6c39917d3837.js.map -------------------------------------------------------------------------------- /app/vueapp/dist/static/app-4875277d6c39917d3837.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///static/app-4875277d6c39917d3837.js","webpack:///./src/main.js","webpack:///App.vue","webpack:///Hello.vue","webpack:///./src/assets/django-logo.png","webpack:///./src/assets/vue-logo.png","webpack:///./src/App.vue","webpack:///./src/components/Hello.vue","webpack:///./src/App.vue?4da9","webpack:///./src/components/Hello.vue?ee9e"],"names":["webpackJsonp","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","_vue","_vue2","_App","_App2","el","template","components","App","Object","defineProperty","value","_Hello","_Hello2","name","Hello","data","msg","__vue_exports__","__vue_options__","__vue_template__","options","render","staticRenderFns","_scopeId","_vm","this","_h","$createElement","_c","_self","attrs","id","src","_v","staticClass","_s","_m","href","target"],"mappings":"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","file":"static/app-4875277d6c39917d3837.js","sourcesContent":["webpackJsonp([1,0],[\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _vue = __webpack_require__(11);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _App = __webpack_require__(7);\n\t\n\tvar _App2 = _interopRequireDefault(_App);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tnew _vue2.default({\n\t el: '#app',\n\t template: '',\n\t components: { App: _App2.default }\n\t});\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _Hello = __webpack_require__(8);\n\t\n\tvar _Hello2 = _interopRequireDefault(_Hello);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'app',\n\t components: {\n\t Hello: _Hello2.default\n\t }\n\t};\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = {\n\t name: 'hello',\n\t data: function data() {\n\t return {\n\t msg: 'Welcome to Your Vue.js + Django App'\n\t };\n\t }\n\t};\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"data:image/png;base64,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\"\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd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\"\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\tvar __vue_styles__ = {}\n\t\n\t/* styles */\n\t__webpack_require__(3)\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(1)\n\t\n\t/* template */\n\tvar __vue_template__ = __webpack_require__(9)\n\t__vue_options__ = __vue_exports__ = __vue_exports__ || {}\n\tif (\n\t typeof __vue_exports__.default === \"object\" ||\n\t typeof __vue_exports__.default === \"function\"\n\t) {\n\t__vue_options__ = __vue_exports__ = __vue_exports__.default\n\t}\n\tif (typeof __vue_options__ === \"function\") {\n\t __vue_options__ = __vue_options__.options\n\t}\n\t\n\t__vue_options__.render = __vue_template__.render\n\t__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\t\n\tmodule.exports = __vue_exports__\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\tvar __vue_styles__ = {}\n\t\n\t/* styles */\n\t__webpack_require__(4)\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(2)\n\t\n\t/* template */\n\tvar __vue_template__ = __webpack_require__(10)\n\t__vue_options__ = __vue_exports__ = __vue_exports__ || {}\n\tif (\n\t typeof __vue_exports__.default === \"object\" ||\n\t typeof __vue_exports__.default === \"function\"\n\t) {\n\t__vue_options__ = __vue_exports__ = __vue_exports__.default\n\t}\n\tif (typeof __vue_options__ === \"function\") {\n\t __vue_options__ = __vue_options__.options\n\t}\n\t\n\t__vue_options__.render = __vue_template__.render\n\t__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\t__vue_options__._scopeId = \"data-v-bcbf98c6\"\n\t\n\tmodule.exports = __vue_exports__\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n\t return _c('div', {\n\t attrs: {\n\t \"id\": \"app\"\n\t }\n\t }, [_c('img', {\n\t attrs: {\n\t \"src\": __webpack_require__(6)\n\t }\n\t }), _vm._v(\" \"), _c('h1', [_vm._v(\"+\")]), _vm._v(\" \"), _c('img', {\n\t attrs: {\n\t \"id\": \"django\",\n\t \"src\": __webpack_require__(5)\n\t }\n\t }), _vm._v(\" \"), _c('hello')], 1)\n\t},staticRenderFns: []}\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\tmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n\t return _c('div', {\n\t staticClass: \"hello\"\n\t }, [_c('h1', [_vm._v(_vm._s(_vm.msg))]), _vm._v(\" \"), _c('h2', [_vm._v(\"Essential Links\")]), _vm._v(\" \"), _vm._m(0), _vm._v(\" \"), _c('h2', [_vm._v(\"Ecosystem\")]), _vm._v(\" \"), _vm._m(1)])\n\t},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n\t return _c('ul', [_c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"https://vuejs.org\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"Core Docs\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"https://forum.vuejs.org\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"Forum\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"https://gitter.im/vuejs/vue\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"Gitter Chat\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"https://twitter.com/vuejs\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"Twitter\")])]), _vm._v(\" \"), _c('br'), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"http://vuejs-templates.github.io/webpack/\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"Docs for This Template\")])])])\n\t},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n\t return _c('ul', [_c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"http://router.vuejs.org/\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"vue-router\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"http://vuex.vuejs.org/\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"vuex\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"http://vue-loader.vuejs.org/\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"vue-loader\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n\t attrs: {\n\t \"href\": \"https://github.com/vuejs/awesome-vue\",\n\t \"target\": \"_blank\"\n\t }\n\t }, [_vm._v(\"awesome-vue\")])])])\n\t}]}\n\n/***/ }\n]);\n\n\n// WEBPACK FOOTER //\n// static/app-4875277d6c39917d3837.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n template: '',\n components: { App }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// App.vue?8e0573fa","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Hello.vue?49b797fa","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/django-logo.png\n// module id = 5\n// module chunks = 1","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/vue-logo.png\n// module id = 6\n// module chunks = 1","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!./../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"extract\\\":true,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!vue-loader/lib/style-rewriter?id=data-v-7f536b8d!vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./App.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-7f536b8d!vue-loader/lib/selector?type=template&index=0!./App.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = 7\n// module chunks = 1","var __vue_exports__, __vue_options__\nvar __vue_styles__ = {}\n\n/* styles */\nrequire(\"!!./../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"extract\\\":true,\\\"remove\\\":true}!vue-style-loader!css-loader?sourceMap!vue-loader/lib/style-rewriter?id=data-v-bcbf98c6&scoped=true!vue-loader/lib/selector?type=styles&index=0!./Hello.vue\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Hello.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-bcbf98c6!vue-loader/lib/selector?type=template&index=0!./Hello.vue\")\n__vue_options__ = __vue_exports__ = __vue_exports__ || {}\nif (\n typeof __vue_exports__.default === \"object\" ||\n typeof __vue_exports__.default === \"function\"\n) {\n__vue_options__ = __vue_exports__ = __vue_exports__.default\n}\nif (typeof __vue_options__ === \"function\") {\n __vue_options__ = __vue_options__.options\n}\n\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-bcbf98c6\"\n\nmodule.exports = __vue_exports__\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Hello.vue\n// module id = 8\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('img', {\n attrs: {\n \"src\": require(\"./assets/vue-logo.png\")\n }\n }), _vm._v(\" \"), _c('h1', [_vm._v(\"+\")]), _vm._v(\" \"), _c('img', {\n attrs: {\n \"id\": \"django\",\n \"src\": require(\"./assets/django-logo.png\")\n }\n }), _vm._v(\" \"), _c('hello')], 1)\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-7f536b8d!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = 9\n// module chunks = 1","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"hello\"\n }, [_c('h1', [_vm._v(_vm._s(_vm.msg))]), _vm._v(\" \"), _c('h2', [_vm._v(\"Essential Links\")]), _vm._v(\" \"), _vm._m(0), _vm._v(\" \"), _c('h2', [_vm._v(\"Ecosystem\")]), _vm._v(\" \"), _vm._m(1)])\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('ul', [_c('li', [_c('a', {\n attrs: {\n \"href\": \"https://vuejs.org\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"Core Docs\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"https://forum.vuejs.org\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"Forum\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"https://gitter.im/vuejs/vue\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"Gitter Chat\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"https://twitter.com/vuejs\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"Twitter\")])]), _vm._v(\" \"), _c('br'), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"http://vuejs-templates.github.io/webpack/\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"Docs for This Template\")])])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('ul', [_c('li', [_c('a', {\n attrs: {\n \"href\": \"http://router.vuejs.org/\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"vue-router\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"http://vuex.vuejs.org/\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"vuex\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"http://vue-loader.vuejs.org/\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"vue-loader\")])]), _vm._v(\" \"), _c('li', [_c('a', {\n attrs: {\n \"href\": \"https://github.com/vuejs/awesome-vue\",\n \"target\": \"_blank\"\n }\n }, [_vm._v(\"awesome-vue\")])])])\n}]}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?id=data-v-bcbf98c6!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Hello.vue\n// module id = 10\n// module chunks = 1"],"sourceRoot":""} -------------------------------------------------------------------------------- /app/vueapp/dist/static/app-943f500650715913d4968b4f5e6c1a60.css: -------------------------------------------------------------------------------- 1 | #app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}#django{max-width:30%;height:auto}h1[data-v-bcbf98c6],h2[data-v-bcbf98c6]{font-weight:400}ul[data-v-bcbf98c6]{list-style-type:none;padding:0}li[data-v-bcbf98c6]{display:inline-block;margin:0 10px}a[data-v-bcbf98c6]{color:#42b983} 2 | /*# sourceMappingURL=app-943f500650715913d4968b4f5e6c1a60.css.map*/ -------------------------------------------------------------------------------- /app/vueapp/dist/static/app-943f500650715913d4968b4f5e6c1a60.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack:///src/App.vue","webpack:///webpack:///src/components/Hello.vue"],"names":[],"mappings":"AACA,KACE,8CACA,mCACA,kCACA,kBACA,cACA,eAAiB,CAEnB,QACE,cACA,WAAY,CCVd,wCACE,eAAoB,CAEtB,oBACE,qBACA,SAAW,CAEb,oBACE,qBACA,aAAe,CAEjB,mBACE,aAAe","file":"static/app-943f500650715913d4968b4f5e6c1a60.css","sourcesContent":["\n#app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-align: center;\n color: #2c3e50;\n margin-top: 60px;\n}\n#django {\n max-width:30%;\n height:auto;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/App.vue","\nh1[data-v-bcbf98c6], h2[data-v-bcbf98c6] {\n font-weight: normal;\n}\nul[data-v-bcbf98c6] {\n list-style-type: none;\n padding: 0;\n}\nli[data-v-bcbf98c6] {\n display: inline-block;\n margin: 0 10px;\n}\na[data-v-bcbf98c6] {\n color: #42b983;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/Hello.vue"],"sourceRoot":""} -------------------------------------------------------------------------------- /app/vueapp/dist/static/manifest-1a5cb24ae675b447d4fa.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(n){if(a[n])return a[n].exports;var p=a[n]={exports:{},id:n,loaded:!1};return e[n].call(p.exports,p,p.exports,t),p.loaded=!0,p.exports}var n=window.webpackJsonp;window.webpackJsonp=function(r,o){for(var c,s,i=0,l=[];i-1)return e.splice(n,1)}}function o(e,t){return ii.call(e,t)}function s(e){return"string"==typeof e||"number"==typeof e}function c(e){var t=Object.create(null);return function(n){var r=t[n];return r||(t[n]=e(n))}}function u(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function l(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function f(e,t){for(var n in t)e[n]=t[n];return e}function d(e){return null!==e&&"object"==typeof e}function p(e){return li.call(e)===fi}function v(e){for(var t={},n=0;n=0&&Bi[n].id>e.id;)n--;Bi.splice(Math.max(n,Ji)+1,0,e)}else Bi.push(e);Hi||(Hi=!0,Ai(J))}}function K(e){Wi.clear(),q(e,Wi)}function q(e,t){var n,r,i=Array.isArray(e);if((i||d(e))&&Object.isExtensible(e)){if(e.__ob__){var a=e.__ob__.dep.id;if(t.has(a))return;t.add(a)}if(i)for(n=e.length;n--;)q(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)q(e[r[n]],t)}}function W(e){e._watchers=[];var t=e.$options;t.props&&Z(e,t.props),t.methods&&X(e,t.methods),t.data?G(e):O(e._data={},!0),t.computed&&Y(e,t.computed),t.watch&&ee(e,t.watch)}function Z(e,t){var n=e.$options.propsData||{},r=e.$options._propKeys=Object.keys(t),i=!e.$parent;Di.shouldConvert=i;for(var a=function(i){var a=r[i];S(e,a,U(a,t,n,e))},o=0;o1?l(n):n;for(var r=l(arguments,1),i=0,a=n.length;i-1:e.test(t)}function Ge(e){var t={};t.get=function(){return vi},Object.defineProperty(e,"config",t),e.util=Ui,e.set=T,e.delete=E,e.nextTick=Ai,e.options=Object.create(null),vi._assetTypes.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,f(e.options.components,oa),Ve(e),Ke(e),qe(e),We(e)}function Ye(e){for(var t=e.data,n=e,r=e;r.child;)r=r.child._vnode,r.data&&(t=Qe(r.data,t));for(;n=n.parent;)n.data&&(t=Qe(t,n.data));return Xe(t)}function Qe(e,t){return{staticClass:et(e.staticClass,t.staticClass),class:e.class?[e.class,t.class]:t.class}}function Xe(e){var t=e.class,n=e.staticClass;return n||t?et(n,tt(t)):""}function et(e,t){return e?t?e+" "+t:e:t||""}function tt(e){var t="";if(!e)return t;if("string"==typeof e)return e;if(Array.isArray(e)){for(var n,r=0,i=e.length;r-1?wa[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:wa[e]=/HTMLUnknownElement/.test(t.toString())}function it(e){if("string"==typeof e){if(e=document.querySelector(e),!e)return document.createElement("div")}return e}function at(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&"multiple"in t.data.attrs&&n.setAttribute("multiple","multiple"),n)}function ot(e,t){return document.createElementNS(ga[e],t)}function st(e){return document.createTextNode(e)}function ct(e){return document.createComment(e)}function ut(e,t,n){e.insertBefore(t,n)}function lt(e,t){e.removeChild(t)}function ft(e,t){e.appendChild(t)}function dt(e){return e.parentNode}function pt(e){return e.nextSibling}function vt(e){return e.tagName}function ht(e,t){e.textContent=t}function mt(e,t,n){e.setAttribute(t,n)}function gt(e,t){var n=e.data.ref;if(n){var r=e.context,i=e.child||e.elm,o=r.$refs;t?Array.isArray(o[n])?a(o[n],i):o[n]===i&&(o[n]=void 0):e.data.refInFor?Array.isArray(o[n])&&o[n].indexOf(i)<0?o[n].push(i):o[n]=[i]:o[n]=i}}function yt(e){return null==e}function _t(e){return null!=e}function bt(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&!e.data==!t.data}function $t(e,t,n){var r,i,a={};for(r=t;r<=n;++r)i=e[r].key,_t(i)&&(a[i]=r);return a}function wt(e){function t(e){return new Gi(O.tagName(e).toLowerCase(),{},[],void 0,e)}function n(e,t){function n(){0===--n.listeners&&r(e)}return n.listeners=t,n}function r(e){var t=O.parentNode(e);t&&O.removeChild(t,e)}function a(e,t,n,r,i){if(e.isRootInsert=!i,!o(e,t,n,r)){var a=e.data,s=e.children,c=e.tag;_t(c)?(e.elm=e.ns?O.createElementNS(e.ns,c):O.createElement(c,e),v(e),l(e,s,t),_t(a)&&d(e,t),u(n,e.elm,r)):e.isComment?(e.elm=O.createComment(e.text),u(n,e.elm,r)):(e.elm=O.createTextNode(e.text),u(n,e.elm,r))}}function o(e,t,n,r){var i=e.data;if(_t(i)){var a=_t(e.child)&&i.keepAlive;if(_t(i=i.hook)&&_t(i=i.init)&&i(e,!1,n,r),_t(e.child))return p(e,t),a&&c(e,t,n,r),!0}}function c(e,t,n,r){for(var i,a=e;a.child;)if(a=a.child._vnode,_t(i=a.data)&&_t(i=i.transition)){for(i=0;id?(u=yt(n[m+1])?null:n[m+1].elm,h(e,u,n,f,m,r)):f>m&&g(e,t,l,d)}function b(e,t,n,r){if(e!==t){if(t.isStatic&&e.isStatic&&t.key===e.key&&(t.isCloned||t.isOnce))return t.elm=e.elm,void(t.child=e.child);var i,a=t.data,o=_t(a);o&&_t(i=a.hook)&&_t(i=i.prepatch)&&i(e,t);var s=t.elm=e.elm,c=e.children,u=t.children;if(o&&f(t)){for(i=0;i-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+e.getAttribute("class")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function zt(e,t){if(t&&t.trim())if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t);else{for(var n=" "+e.getAttribute("class")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");e.setAttribute("class",n.trim())}}function Jt(e){Wa(function(){Wa(e)})}function Vt(e,t){(e._transitionClasses||(e._transitionClasses=[])).push(t),Ht(e,t)}function Kt(e,t){e._transitionClasses&&a(e._transitionClasses,t),zt(e,t)}function qt(e,t,n){var r=Wt(e,t),i=r.type,a=r.timeout,o=r.propCount;if(!i)return n();var s=i===Ha?Va:qa,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=o&&u()};setTimeout(function(){c0&&(n=Ha,l=o,f=a.length):t===za?u>0&&(n=za,l=u,f=c.length):(l=Math.max(o,u),n=l>0?o>u?Ha:za:null,f=n?n===Ha?a.length:c.length:0);var d=n===Ha&&Za.test(r[Ja+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:d}}function Zt(e,t){for(;e.length1,N=n._enterCb=en(function(){E&&(Kt(n,k),Kt(n,x)),N.cancelled?(E&&Kt(n,C),T&&T(n)):S&&S(n),n._enterCb=null});e.data.show||se(e.data.hook||(e.data.hook={}),"insert",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.context===e.context&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),O&&O(n,N)},"transition-insert"),A&&A(n),E&&(Vt(n,C),Vt(n,x),Jt(function(){Vt(n,k),Kt(n,C),N.cancelled||j||qt(n,a,N)})),e.data.show&&(t&&t(),O&&O(n,N)),E||j||N()}}}function Qt(e,t){function n(){g.cancelled||(e.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[e.key]=e),l&&l(r),h&&(Vt(r,s),Vt(r,u),Jt(function(){Vt(r,c),Kt(r,s),g.cancelled||m||qt(r,o,g)})),f&&f(r,g),h||m||g())}var r=e.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var i=Xt(e.data.transition);if(!i)return t();if(!r._leaveCb&&1===r.nodeType){var a=i.css,o=i.type,s=i.leaveClass,c=i.leaveToClass,u=i.leaveActiveClass,l=i.beforeLeave,f=i.leave,d=i.afterLeave,p=i.leaveCancelled,v=i.delayLeave,h=a!==!1&&!bi,m=f&&(f._length||f.length)>1,g=r._leaveCb=en(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[e.key]=null),h&&(Kt(r,c),Kt(r,u)),g.cancelled?(h&&Kt(r,s),p&&p(r)):(t(),d&&d(r)),r._leaveCb=null});v?v(n):n()}}function Xt(e){if(e){if("object"==typeof e){var t={};return e.css!==!1&&f(t,Ga(e.name||"v")),f(t,e),t}return"string"==typeof e?Ga(e):void 0}}function en(e){var t=!1;return function(){t||(t=!0,e())}}function tn(e,t){t.data.show||Yt(t)}function nn(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var a,o,s=0,c=e.options.length;s-1,o.selected!==a&&(o.selected=a);else if(g(an(o),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function rn(e,t){for(var n=0,r=t.length;n',n.innerHTML.indexOf(t)>0}function _n(e){return uo=uo||document.createElement("div"),uo.innerHTML=e,uo.textContent}function bn(e,t){return t&&(e=e.replace(as,"\n")),e.replace(rs,"<").replace(is,">").replace(os,"&").replace(ss,'"')}function $n(e,t){function n(t){f+=t,e=e.substring(t)}function r(){var t=e.match($o);if(t){var r={tagName:t[1],attrs:[],start:f};n(t[0].length);for(var i,a;!(i=e.match(wo))&&(a=e.match(yo));)n(a[0].length),r.attrs.push(a);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=f,r}}function i(e){var n=e.tagName,r=e.unarySlash;u&&("p"===s&&vo(n)&&a("",s),po(n)&&s===n&&a("",n));for(var i=l(n)||"html"===n&&"head"===s||!!r,o=e.attrs.length,f=new Array(o),d=0;d=0&&c[a].tag.toLowerCase()!==o;a--);}else a=0;if(a>=0){for(var u=c.length-1;u>=a;u--)t.end&&t.end(c[u].tag,r,i);c.length=a,s=a&&c[a-1].tag}else"br"===n.toLowerCase()?t.start&&t.start(n,[],!0,r,i):"p"===n.toLowerCase()&&(t.start&&t.start(n,[],!1,r,i),t.end&&t.end(n,r,i))}for(var o,s,c=[],u=t.expectHTML,l=t.isUnaryTag||di,f=0;e;){if(o=e,s&&ts(s,t.sfc,c)){var d=s.toLowerCase(),p=ns[d]||(ns[d]=new RegExp("([\\s\\S]*?)(]*>)","i")),v=0,h=e.replace(p,function(e,n,r){return v=r.length,"script"!==d&&"style"!==d&&"noscript"!==d&&(n=n.replace(//g,"$1").replace(//g,"$1")),t.chars&&t.chars(n),""});f+=e.length-h.length,e=h,a("",d,f-v,f)}else{var m=e.indexOf("<");if(0===m){if(ko.test(e)){var g=e.indexOf("-->");if(g>=0){n(g+3);continue}}if(Ao.test(e)){var y=e.indexOf("]>");if(y>=0){n(y+2);continue}}var _=e.match(xo);if(_){n(_[0].length);continue}var b=e.match(Co);if(b){var $=f;n(b[0].length),a(b[0],b[1],$,f);continue}var w=r();if(w){i(w);continue}}var C=void 0,x=void 0,k=void 0;if(m>0){for(x=e.slice(m);!(Co.test(x)||$o.test(x)||ko.test(x)||Ao.test(x)||(k=x.indexOf("<",1),k<0));)m+=k,x=e.slice(m);C=e.substring(0,m),n(m)}m<0&&(C=e,e=""),t.chars&&C&&t.chars(C)}if(e===o&&t.chars){t.chars(e);break}}a()}function wn(e){function t(){(o||(o=[])).push(e.slice(v,i).trim()),v=i+1}var n,r,i,a,o,s=!1,c=!1,u=!1,l=!1,f=0,d=0,p=0,v=0;for(i=0;i=0&&(m=e.charAt(h)," "===m);h--);m&&/[\w$]/.test(m)||(l=!0)}}else void 0===a?(v=i+1,a=e.slice(0,i).trim()):t();if(void 0===a?a=e.slice(0,i).trim():0!==v&&t(),o)for(i=0;io&&a.push(JSON.stringify(e.slice(o,i)));var s=wn(r[1].trim());a.push("_s("+s+")"),o=i+r[0].length}return o=So}function Pn(e){return 34===e||39===e}function Rn(e){var t=1;for(No=jo;!Dn();)if(e=Mn(),Pn(e))In(e);else if(91===e&&t++,93===e&&t--,0===t){Lo=jo;break}}function In(e){for(var t=e;!Dn()&&(e=Mn(),e!==t););}function Un(e,t){Mo=t.warn||kn,Do=t.getTagNamespace||di,Po=t.mustUseProp||di,Ro=t.isPreTag||di,Io=An(t.modules,"preTransformNode"),Uo=An(t.modules,"transformNode"),Bo=An(t.modules,"postTransformNode"),Fo=t.delimiters;var n,r,i=[],a=t.preserveWhitespace!==!1,o=!1,s=!1;return $n(e,{expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,shouldDecodeNewlines:t.shouldDecodeNewlines,start:function(e,a,c){function u(e){}var l=r&&r.ns||Do(e);_i&&"svg"===l&&(a=rr(a));var f={type:1,tag:e,attrsList:a,attrsMap:tr(a),parent:r,children:[]};l&&(f.ns=l),nr(f)&&!xi()&&(f.forbidden=!0);for(var d=0;d-1"+("true"===a?":("+t+")":":_q("+t+","+a+")")),En(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+a+"):("+o+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+t+"=$$a.concat($$v))}else{$$i>-1&&("+t+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+t+"=$$c}",null,!0)}function Vr(e,t,n){var r=n&&n.number,i=jn(e,"value")||"null";i=r?"_n("+i+")":i,On(e,"checked","_q("+t+","+i+")"),En(e,"change",Wr(t,i),null,!0)}function Kr(e,t,n){var r=e.attrsMap.type,i=n||{},a=i.lazy,o=i.number,s=i.trim,c=a||_i&&"range"===r?"change":"input",u=!a&&"range"!==r,l="input"===e.tag||"textarea"===e.tag,f=l?"$event.target.value"+(s?".trim()":""):s?"(typeof $event === 'string' ? $event.trim() : $event)":"$event";f=o||"number"===r?"_n("+f+")":f;var d=Wr(t,f);l&&u&&(d="if($event.target.composing)return;"+d),On(e,"value",l?"_s("+t+")":"("+t+")"),En(e,c,d,null,!0),(s||o||"number"===r)&&En(e,"blur","$forceUpdate()")}function qr(e,t,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})"+(null==e.attrsMap.multiple?"[0]":""),a=Wr(t,i);En(e,"change",a,null,!0)}function Wr(e,t){var n=Ln(e);return null===n.idx?e+"="+t:"var $$exp = "+n.exp+", $$idx = "+n.idx+";if (!Array.isArray($$exp)){"+e+"="+t+"}else{$$exp.splice($$idx, 1, "+t+")}"}function Zr(e,t){t.value&&On(e,"textContent","_s("+t.value+")")}function Gr(e,t){t.value&&On(e,"innerHTML","_s("+t.value+")")}function Yr(e,t){return t=t?f(f({},Ns),t):Ns,Ir(e,t)}function Qr(e,t,n){var r=(t&&t.warn||Si,t&&t.delimiters?String(t.delimiters)+e:e);if(js[r])return js[r];var i={},a=Yr(e,t);i.render=Xr(a.render);var o=a.staticRenderFns.length;i.staticRenderFns=new Array(o);for(var s=0;s0,$i=yi&&yi.indexOf("edge/")>0,wi=yi&&yi.indexOf("android")>0,Ci=yi&&/iphone|ipad|ipod|ios/.test(yi),xi=function(){return void 0===ti&&(ti=!gi&&"undefined"!=typeof t&&"server"===t.process.env.VUE_ENV),ti},ki=gi&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Ai=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t1&&(t[n[0].trim()]=n[1].trim())}}),t}),Da=/^--/,Pa=/\s*!important$/,Ra=function(e,t,n){Da.test(t)?e.style.setProperty(t,n):Pa.test(n)?e.style.setProperty(t,n.replace(Pa,""),"important"):e.style[Ua(t)]=n},Ia=["Webkit","Moz","ms"],Ua=c(function(e){if(ca=ca||document.createElement("div"),e=oi(e),"filter"!==e&&e in ca.style)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n\/=]+)/,mo=/(?:=)/,go=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],yo=new RegExp("^\\s*"+ho.source+"(?:\\s*("+mo.source+")\\s*(?:"+go.join("|")+"))?"),_o="[a-zA-Z_][\\w\\-\\.]*",bo="((?:"+_o+"\\:)?"+_o+")",$o=new RegExp("^<"+bo),wo=/^\s*(\/?)>/,Co=new RegExp("^<\\/"+bo+"[^>]*>"),xo=/^]+>/i,ko=/^ 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/vueapp/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vueapp", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project", 5 | "author": "Dylan Stein ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build": "node build/build.js", 10 | "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", 11 | "e2e": "node test/e2e/runner.js", 12 | "test": "npm run unit && npm run e2e", 13 | "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs" 14 | }, 15 | "dependencies": { 16 | "vue": "^2.1.0" 17 | }, 18 | "devDependencies": { 19 | "autoprefixer": "^6.4.0", 20 | "babel-core": "^6.0.0", 21 | "babel-eslint": "^7.0.0", 22 | "babel-loader": "^6.0.0", 23 | "babel-plugin-transform-runtime": "^6.0.0", 24 | "babel-preset-es2015": "^6.0.0", 25 | "babel-preset-stage-2": "^6.0.0", 26 | "babel-register": "^6.0.0", 27 | "chalk": "^1.1.3", 28 | "connect-history-api-fallback": "^1.1.0", 29 | "css-loader": "^0.26.1", 30 | "eslint": "^3.7.1", 31 | "eslint-friendly-formatter": "^2.0.5", 32 | "eslint-loader": "^1.5.0", 33 | "eslint-plugin-html": "^1.3.0", 34 | "eslint-config-standard": "^6.1.0", 35 | "eslint-plugin-promise": "^3.4.0", 36 | "eslint-plugin-standard": "^2.0.1", 37 | "eventsource-polyfill": "^0.9.6", 38 | "express": "^4.13.3", 39 | "extract-text-webpack-plugin": "^1.0.1", 40 | "file-loader": "^0.9.0", 41 | "friendly-errors-webpack-plugin": "^1.1.2", 42 | "function-bind": "^1.0.2", 43 | "html-webpack-plugin": "^2.8.1", 44 | "http-proxy-middleware": "^0.17.2", 45 | "json-loader": "^0.5.4", 46 | "cross-env": "^3.1.3", 47 | "karma": "^1.3.0", 48 | "karma-coverage": "^1.1.1", 49 | "karma-mocha": "^1.2.0", 50 | "karma-phantomjs-launcher": "^1.0.0", 51 | "karma-sinon-chai": "^1.2.0", 52 | "karma-sourcemap-loader": "^0.3.7", 53 | "karma-spec-reporter": "0.0.26", 54 | "karma-webpack": "^2.0.1", 55 | "lolex": "^1.4.0", 56 | "mocha": "^3.1.0", 57 | "chai": "^3.5.0", 58 | "sinon": "^1.17.3", 59 | "sinon-chai": "^2.8.0", 60 | "inject-loader": "^3.0.0-beta3", 61 | "babel-plugin-istanbul": "^3.0.0", 62 | "phantomjs-prebuilt": "^2.1.3", 63 | "chromedriver": "^2.21.2", 64 | "cross-spawn": "^5.0.1", 65 | "nightwatch": "^0.9.8", 66 | "selenium-server": "3.0.1", 67 | "semver": "^5.3.0", 68 | "opn": "^4.0.2", 69 | "ora": "^0.4.1", 70 | "shelljs": "^0.7.4", 71 | "url-loader": "^0.5.7", 72 | "vue-loader": "^10.0.0", 73 | "vue-style-loader": "^1.0.0", 74 | "vue-template-compiler": "^2.1.0", 75 | "webpack": "^1.13.2", 76 | "webpack-bundle-tracker": "^0.0.5", 77 | "webpack-dev-middleware": "^1.8.3", 78 | "webpack-hot-middleware": "^2.12.2", 79 | "webpack-merge": "^2.4.0" 80 | }, 81 | "engines": { 82 | "node": ">= 4.0.0", 83 | "npm": ">= 3.0.0" 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /app/vueapp/src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | 35 | -------------------------------------------------------------------------------- /app/vueapp/src/assets/django-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/vueapp/src/assets/django-logo.png -------------------------------------------------------------------------------- /app/vueapp/src/assets/vue-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/vueapp/src/assets/vue-logo.png -------------------------------------------------------------------------------- /app/vueapp/src/components/Hello.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 33 | 34 | 35 | 54 | -------------------------------------------------------------------------------- /app/vueapp/src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | 6 | /* eslint-disable no-new */ 7 | new Vue({ 8 | el: '#app', 9 | template: '', 10 | components: { App } 11 | }) 12 | -------------------------------------------------------------------------------- /app/vueapp/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/app/vueapp/static/.gitkeep -------------------------------------------------------------------------------- /app/vueapp/test/e2e/custom-assertions/elementCount.js: -------------------------------------------------------------------------------- 1 | // A custom Nightwatch assertion. 2 | // the name of the method is the filename. 3 | // can be used in tests like this: 4 | // 5 | // browser.assert.elementCount(selector, count) 6 | // 7 | // for how to write custom assertions see 8 | // http://nightwatchjs.org/guide#writing-custom-assertions 9 | exports.assertion = function (selector, count) { 10 | this.message = 'Testing if element <' + selector + '> has count: ' + count 11 | this.expected = count 12 | this.pass = function (val) { 13 | return val === this.expected 14 | } 15 | this.value = function (res) { 16 | return res.value 17 | } 18 | this.command = function (cb) { 19 | var self = this 20 | return this.api.execute(function (selector) { 21 | return document.querySelectorAll(selector).length 22 | }, [selector], function (res) { 23 | cb.call(self, res) 24 | }) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/vueapp/test/e2e/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | require('babel-register') 2 | var config = require('../../config') 3 | 4 | // http://nightwatchjs.org/guide#settings-file 5 | module.exports = { 6 | src_folders: ['test/e2e/specs'], 7 | output_folder: 'test/e2e/reports', 8 | custom_assertions_path: ['test/e2e/custom-assertions'], 9 | 10 | selenium: { 11 | start_process: true, 12 | server_path: 'node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.1.jar', 13 | host: '127.0.0.1', 14 | port: 4444, 15 | cli_args: { 16 | 'webdriver.chrome.driver': require('chromedriver').path 17 | } 18 | }, 19 | 20 | test_settings: { 21 | default: { 22 | selenium_port: 4444, 23 | selenium_host: 'localhost', 24 | silent: true, 25 | globals: { 26 | devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port) 27 | } 28 | }, 29 | 30 | chrome: { 31 | desiredCapabilities: { 32 | browserName: 'chrome', 33 | javascriptEnabled: true, 34 | acceptSslCerts: true 35 | } 36 | }, 37 | 38 | firefox: { 39 | desiredCapabilities: { 40 | browserName: 'firefox', 41 | javascriptEnabled: true, 42 | acceptSslCerts: true 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/vueapp/test/e2e/runner.js: -------------------------------------------------------------------------------- 1 | // 1. start the dev server using production config 2 | process.env.NODE_ENV = 'testing' 3 | var server = require('../../build/dev-server.js') 4 | 5 | // 2. run the nightwatch test suite against it 6 | // to run in additional browsers: 7 | // 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings" 8 | // 2. add it to the --env flag below 9 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox` 10 | // For more information on Nightwatch's config file, see 11 | // http://nightwatchjs.org/guide#settings-file 12 | var opts = process.argv.slice(2) 13 | if (opts.indexOf('--config') === -1) { 14 | opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js']) 15 | } 16 | if (opts.indexOf('--env') === -1) { 17 | opts = opts.concat(['--env', 'chrome']) 18 | } 19 | 20 | var spawn = require('cross-spawn') 21 | var runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' }) 22 | 23 | runner.on('exit', function (code) { 24 | server.close() 25 | process.exit(code) 26 | }) 27 | 28 | runner.on('error', function (err) { 29 | server.close() 30 | throw err 31 | }) 32 | -------------------------------------------------------------------------------- /app/vueapp/test/e2e/specs/test.js: -------------------------------------------------------------------------------- 1 | // For authoring Nightwatch tests, see 2 | // http://nightwatchjs.org/guide#usage 3 | 4 | module.exports = { 5 | 'default e2e tests': function (browser) { 6 | // automatically uses dev Server port from /config.index.js 7 | // default: http://localhost:8080 8 | // see nightwatch.conf.js 9 | const devServer = browser.globals.devServerURL 10 | 11 | browser 12 | .url(devServer) 13 | .waitForElementVisible('#app', 5000) 14 | .assert.elementPresent('.hello') 15 | .assert.containsText('h1', 'Welcome to Your Vue.js App') 16 | .assert.elementCount('img', 1) 17 | .end() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/vueapp/test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "expect": true, 7 | "sinon": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/vueapp/test/unit/index.js: -------------------------------------------------------------------------------- 1 | // Polyfill fn.bind() for PhantomJS 2 | /* eslint-disable no-extend-native */ 3 | Function.prototype.bind = require('function-bind') 4 | 5 | // require all test files (files that ends with .spec.js) 6 | const testsContext = require.context('./specs', true, /\.spec$/) 7 | testsContext.keys().forEach(testsContext) 8 | 9 | // require all src files except main.js for coverage. 10 | // you can also change this to match only the subset of files that 11 | // you want coverage for. 12 | const srcContext = require.context('src', true, /^\.\/(?!main(\.js)?$)/) 13 | srcContext.keys().forEach(srcContext) 14 | -------------------------------------------------------------------------------- /app/vueapp/test/unit/karma.conf.js: -------------------------------------------------------------------------------- 1 | // This is a karma config file. For more details see 2 | // http://karma-runner.github.io/0.13/config/configuration-file.html 3 | // we are also using it with karma-webpack 4 | // https://github.com/webpack/karma-webpack 5 | 6 | var path = require('path') 7 | var merge = require('webpack-merge') 8 | var baseConfig = require('../../build/webpack.base.conf') 9 | var utils = require('../../build/utils') 10 | var webpack = require('webpack') 11 | var projectRoot = path.resolve(__dirname, '../../') 12 | 13 | var webpackConfig = merge(baseConfig, { 14 | // use inline sourcemap for karma-sourcemap-loader 15 | module: { 16 | loaders: utils.styleLoaders() 17 | }, 18 | devtool: '#inline-source-map', 19 | vue: { 20 | loaders: { 21 | js: 'babel-loader' 22 | } 23 | }, 24 | plugins: [ 25 | new webpack.DefinePlugin({ 26 | 'process.env': require('../../config/test.env') 27 | }) 28 | ] 29 | }) 30 | 31 | // no need for app entry during tests 32 | delete webpackConfig.entry 33 | 34 | // Use babel for test files too 35 | webpackConfig.module.loaders.some(function (loader, i) { 36 | if (/^babel(-loader)?$/.test(loader.loader)) { 37 | loader.include.push(path.resolve(projectRoot, 'test/unit')) 38 | return true 39 | } 40 | }) 41 | 42 | module.exports = function (config) { 43 | config.set({ 44 | // to run in additional browsers: 45 | // 1. install corresponding karma launcher 46 | // http://karma-runner.github.io/0.13/config/browsers.html 47 | // 2. add it to the `browsers` array below. 48 | browsers: ['PhantomJS'], 49 | frameworks: ['mocha', 'sinon-chai'], 50 | reporters: ['spec', 'coverage'], 51 | files: ['./index.js'], 52 | preprocessors: { 53 | './index.js': ['webpack', 'sourcemap'] 54 | }, 55 | webpack: webpackConfig, 56 | webpackMiddleware: { 57 | noInfo: true 58 | }, 59 | coverageReporter: { 60 | dir: './coverage', 61 | reporters: [ 62 | { type: 'lcov', subdir: '.' }, 63 | { type: 'text-summary' } 64 | ] 65 | } 66 | }) 67 | } 68 | -------------------------------------------------------------------------------- /app/vueapp/test/unit/specs/Hello.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Hello from 'src/components/Hello' 3 | 4 | describe('Hello.vue', () => { 5 | it('should render correct contents', () => { 6 | const vm = new Vue({ 7 | el: document.createElement('div'), 8 | render: (h) => h(Hello) 9 | }) 10 | expect(vm.$el.querySelector('.hello h1').textContent) 11 | .to.equal('Welcome to Your Vue.js App') 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /app/vueapp/webpack-stats.json: -------------------------------------------------------------------------------- 1 | {"status":"done","chunks":{"manifest":[{"name":"static/manifest-1a5cb24ae675b447d4fa.js","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/manifest-1a5cb24ae675b447d4fa.js","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/manifest-1a5cb24ae675b447d4fa.js"},{"name":"static/manifest-1a5cb24ae675b447d4fa.js.map","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/manifest-1a5cb24ae675b447d4fa.js.map","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/manifest-1a5cb24ae675b447d4fa.js.map"}],"app":[{"name":"static/app-4875277d6c39917d3837.js","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/app-4875277d6c39917d3837.js","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/app-4875277d6c39917d3837.js"},{"name":"static/app-943f500650715913d4968b4f5e6c1a60.css","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/app-943f500650715913d4968b4f5e6c1a60.css","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/app-943f500650715913d4968b4f5e6c1a60.css"},{"name":"static/app-4875277d6c39917d3837.js.map","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/app-4875277d6c39917d3837.js.map","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/app-4875277d6c39917d3837.js.map"},{"name":"static/app-943f500650715913d4968b4f5e6c1a60.css.map","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/app-943f500650715913d4968b4f5e6c1a60.css.map","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/app-943f500650715913d4968b4f5e6c1a60.css.map"}],"vendor":[{"name":"static/vendor-9a27f43c36e8aef8b4ef.js","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/vendor-9a27f43c36e8aef8b4ef.js","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/vendor-9a27f43c36e8aef8b4ef.js"},{"name":"static/vendor-9a27f43c36e8aef8b4ef.js.map","publicPath":"http://vue-django-webpack-deploy-test.44fs.preview.openshiftapps.com/static/vendor-9a27f43c36e8aef8b4ef.js.map","path":"/Users/dylan/git/vue-django-webpack/app/vueapp/dist/static/vendor-9a27f43c36e8aef8b4ef.js.map"}]}} -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | workers = int(os.environ.get('GUNICORN_PROCESSES', '3')) 4 | threads = int(os.environ.get('GUNICORN_THREADS', '1')) 5 | 6 | forwarded_allow_ips = '*' 7 | secure_scheme_headers = { 'X-Forwarded-Proto': 'https' } 8 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError: 10 | # The above import may fail for some other reason. Ensure that the 11 | # issue is really that Django is missing to avoid masking other 12 | # exceptions on Python 2. 13 | try: 14 | import django 15 | except ImportError: 16 | raise ImportError( 17 | "Couldn't import Django. Are you sure it's installed and " 18 | "available on your PYTHONPATH environment variable? Did you " 19 | "forget to activate a virtual environment?" 20 | ) 21 | raise 22 | execute_from_command_line(sys.argv) 23 | -------------------------------------------------------------------------------- /project/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/project/__init__.py -------------------------------------------------------------------------------- /project/__pycache__/__init__.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/project/__pycache__/__init__.cpython-35.pyc -------------------------------------------------------------------------------- /project/__pycache__/settings.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/project/__pycache__/settings.cpython-35.pyc -------------------------------------------------------------------------------- /project/__pycache__/urls.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/project/__pycache__/urls.cpython-35.pyc -------------------------------------------------------------------------------- /project/__pycache__/wsgi.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djstein/vue-django-webpack/d072e116d45800064b3972decbc6ec493801ea5b/project/__pycache__/wsgi.cpython-35.pyc -------------------------------------------------------------------------------- /project/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for project project. 3 | 4 | Generated by 'django-admin startproject' using Django 1.10.5. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.10/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/1.10/ref/settings/ 11 | """ 12 | 13 | import os 14 | 15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = '8t4+&nz#z(dy%$)=&u_&xpo#n-(8ts(^1#yw%tb=7wzp$4i8jv' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = [ 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | ] 41 | 42 | MIDDLEWARE = [ 43 | 'django.middleware.security.SecurityMiddleware', 44 | 'django.contrib.sessions.middleware.SessionMiddleware', 45 | 'django.middleware.common.CommonMiddleware', 46 | 'django.middleware.csrf.CsrfViewMiddleware', 47 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 48 | 'django.contrib.messages.middleware.MessageMiddleware', 49 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 50 | ] 51 | 52 | ROOT_URLCONF = 'project.urls' 53 | 54 | TEMPLATES = [ 55 | { 56 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 57 | 'DIRS': [], 58 | 'APP_DIRS': True, 59 | 'OPTIONS': { 60 | 'context_processors': [ 61 | 'django.template.context_processors.debug', 62 | 'django.template.context_processors.request', 63 | 'django.contrib.auth.context_processors.auth', 64 | 'django.contrib.messages.context_processors.messages', 65 | ], 66 | }, 67 | }, 68 | ] 69 | 70 | WSGI_APPLICATION = 'project.wsgi.application' 71 | 72 | 73 | # Database 74 | # https://docs.djangoproject.com/en/1.10/ref/settings/#databases 75 | 76 | DATABASES = { 77 | 'default': { 78 | 'ENGINE': 'django.db.backends.sqlite3', 79 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 80 | } 81 | } 82 | 83 | 84 | # Password validation 85 | # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators 86 | 87 | AUTH_PASSWORD_VALIDATORS = [ 88 | { 89 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 90 | }, 91 | { 92 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 93 | }, 94 | { 95 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 96 | }, 97 | { 98 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 99 | }, 100 | ] 101 | 102 | 103 | # Internationalization 104 | # https://docs.djangoproject.com/en/1.10/topics/i18n/ 105 | 106 | LANGUAGE_CODE = 'en-us' 107 | 108 | TIME_ZONE = 'UTC' 109 | 110 | USE_I18N = True 111 | 112 | USE_L10N = True 113 | 114 | USE_TZ = True 115 | 116 | 117 | # Static files (CSS, JavaScript, Images) 118 | # https://docs.djangoproject.com/en/1.10/howto/static-files/ 119 | 120 | STATIC_URL = '/static/' 121 | 122 | try: 123 | from project.settings_deploy import * 124 | except ImportError: 125 | pass 126 | -------------------------------------------------------------------------------- /project/settings_deploy.py: -------------------------------------------------------------------------------- 1 | from project.settings import INSTALLED_APPS, ALLOWED_HOSTS, BASE_DIR 2 | import os 3 | 4 | INSTALLED_APPS.append( 'webpack_loader',) 5 | INSTALLED_APPS.append( 'app',) 6 | 7 | ALLOWED_HOSTS.append('*',) 8 | 9 | # STATIC_ROOT = os.path.join(BASE_DIR, 'static') 10 | 11 | STATICFILES_DIRS = [ 12 | # os.path.join(BASE_DIR, 'static',) 13 | os.path.join(BASE_DIR, 'app', 'vueapp','dist', 'static') 14 | ] 15 | 16 | WEBPACK_LOADER = { 17 | 'DEFAULT': { 18 | 'BUNDLE_DIR_NAME': 'static/vueapp/', 19 | 'STATS_FILE': os.path.join(BASE_DIR, 'app', 'vueapp', 'webpack-stats.json') 20 | } 21 | } 22 | 23 | INTERNAL_IPS = ( 24 | '0.0.0.0', 25 | '127.0.0.1', 26 | ) -------------------------------------------------------------------------------- /project/urls.py: -------------------------------------------------------------------------------- 1 | """project URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/1.10/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.conf.urls import url, include 14 | 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 15 | """ 16 | from django.conf import settings 17 | from django.conf.urls import include, url 18 | from django.conf.urls.static import static 19 | from django.contrib import admin 20 | 21 | 22 | urlpatterns = [ 23 | url(r'^admin/', include(admin.site.urls)), 24 | url(r'^', include('app.urls')), 25 | ] 26 | -------------------------------------------------------------------------------- /project/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for project project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Django 2 | django-webpack-loader 3 | gunicorn 4 | Whitenoise 5 | --------------------------------------------------------------------------------