diff --git a/package-lock.json b/package-lock.json index 14fa6b2..700b633 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "express-vue-renderer", - "version": "0.6.7", + "version": "0.6.8", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1563,6 +1563,30 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "butternut": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/butternut/-/butternut-0.4.6.tgz", + "integrity": "sha1-HuTkNZZekk99JFueXmphTLGZFbY=", + "requires": { + "acorn": "5.1.1", + "chalk": "1.1.3", + "magic-string": "0.20.0", + "minimist": "1.2.0", + "sourcemap-codec": "1.3.1" + }, + "dependencies": { + "acorn": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "caching-transform": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", @@ -2216,6 +2240,14 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "dedupe": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dedupe/-/dedupe-2.1.0.tgz", + "integrity": "sha1-fyAdAULKOOSHYs/DP/eYFoGLw0c=", + "requires": { + "sigmund": "1.0.1" + } + }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", @@ -6020,6 +6052,14 @@ "yallist": "2.1.2" } }, + "magic-string": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.20.0.tgz", + "integrity": "sha1-JV8H4LFFncANdGNjZ+kgDLtdUp0=", + "requires": { + "vlq": "0.2.2" + } + }, "make-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", @@ -9795,6 +9835,11 @@ "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=", "dev": true }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -9854,6 +9899,14 @@ "source-map": "0.5.6" } }, + "sourcemap-codec": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.3.1.tgz", + "integrity": "sha1-mtb5vb1pGTEBbjCTnbyGhnMyMUY=", + "requires": { + "vlq": "0.2.2" + } + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -10575,8 +10628,7 @@ "vlq": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz", - "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=", - "dev": true + "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=" }, "void-elements": { "version": "2.0.1", diff --git a/package.json b/package.json index f1ddc88..6880be1 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "dependencies": { "babel-eslint": "^7.2.3", "babel-preset-es2015": "^6.24.1", + "butternut": "^0.4.6", "camel-case": "^3.0.0", "clean-css": "^4.1.7", "dedupe": "^2.1.0", diff --git a/src/renderer/render.js b/src/renderer/render.js index 9b5ed5f..6f0b61e 100644 --- a/src/renderer/render.js +++ b/src/renderer/render.js @@ -2,6 +2,11 @@ const Utils = require('../utils'); const Vue = require('vue'); +const butternut = require('butternut'); +const buttterNutOptions = { + sourceMap: false +}; + function createApp(script) { return new Vue(script); } @@ -28,7 +33,10 @@ function renderedScript(script: Object, router): string { if (process.env.VUE_DEV) { debugToolsString = 'Vue.config.devtools = true;'; } - return ``; + const javaScriptString = `(function () {'use strict';${routerString}var createApp = function () {return new Vue(${scriptString})};if (typeof module !== 'undefined' && module.exports) {module.exports = createApp} else {this.app = createApp()}}).call(this);${debugToolsString}app.$mount('#app');`; + const finalString = butternut.squash(javaScriptString, buttterNutOptions).code; + + return ``; } type htmlUtilType = { diff --git a/tests/index.js b/tests/index.js index a750557..a9c6df8 100644 --- a/tests/index.js +++ b/tests/index.js @@ -21,13 +21,7 @@ const vueOptions = { } const exampleHead = `
\n