diff --git a/cache-me.js b/cache-me.js new file mode 100644 index 0000000..1406724 --- /dev/null +++ b/cache-me.js @@ -0,0 +1,33 @@ +const fs = require('fs-extra') +const Rsync = require('rsync') + +const isProduction = process.env.NODE_ENV === 'PRODUCTION' +const CACHE_PATH = isProduction + ? path.join('/', 'opt', 'build', 'cache', 'nuxt_build') // Netlify cache path + : path.resolve(__dirname, '.nuxt_build') + +const BUILD_PATH = path.resolve(__dirname, 'dist') + +var rsync = new Rsync() + .shell('ssh') + .flags('azq') + .source(BUILD_PATH) + .destination(CACHE_PATH); + +function cacheFinalFiles() { + fs.copy((BUILD_PATH, CACHE_PATH) + .then(() => console.log('successssss')) + .catch(err => console.error(err)) +} + +fs.ensureDir(CACHE_PATH) + .then(() => { + rsync.execute(function(error, code, cmd) { + // we're done + if(!error) { + fs.copy(CACHE_PATH, BUILD_PATH) + .then(() => cacheFinalFiles()) + .catch(err => console.error(err)) + } + }) + }) diff --git a/netlify.toml b/netlify.toml index 08c1549..544a3b3 100644 --- a/netlify.toml +++ b/netlify.toml @@ -7,7 +7,7 @@ [build] publish = "dist" - command = "npm run generate -- --baseURL $DEPLOY_PRIME_URL" + command = "npm run incremental-build -- --baseURL $DEPLOY_PRIME_URL" [context.master] publish = "dist" diff --git a/package-lock.json b/package-lock.json index 191e97f..74e364e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2257,6 +2257,16 @@ "schema-utils": "^1.0.0" } }, + "cache-me-outside": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cache-me-outside/-/cache-me-outside-0.0.10.tgz", + "integrity": "sha512-AN9fsDdzpH5qoQqpHs9qYV7dR6KJ2fYbrwWsq62gj0Xlo8eKUFU4Ood/WDJVns5cpfxFbqMKH6UZd+aLRsQELA==", + "dev": true, + "requires": { + "is-invalid-path": "^1.0.2", + "rimraf": "^2.6.2" + } + }, "caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -5294,6 +5304,12 @@ "is-extglob": "^2.1.1" } }, + "is-invalid-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-1.0.2.tgz", + "integrity": "sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -8488,6 +8504,12 @@ "inherits": "^2.0.1" } }, + "rsync": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/rsync/-/rsync-0.6.1.tgz", + "integrity": "sha1-NoGgCYvYdQRI+L+dof7gn3djdCs=", + "dev": true + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", diff --git a/package.json b/package.json index aea7875..f0bfa7f 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,12 @@ "private": true, "scripts": { "initial-build": "INITIAL_BUILD=true nuxt generate", - "mock-cache-dir": "mkdir cache-mock; mv dist cache-mock/dist; mv .nuxt cache-mock/.nuxt", - "incremental-build": "mv cache-mock/.nuxt .nuxt && INITIAL_BUILD=false nuxt generate --no-build", - "merge": "rsync -avz dist/ cache-mock/dist", + "incremental-build": "INITIAL_BUILD=false nuxt generate --no-build; node cache-me;", "dev": "DEPLOY_ENV=DEV nuxt", "build": "nuxt build", "start": "nuxt start", "generate": "nuxt generate", + "generate-netlify": "DEPLOY_ENV=PRODUCTION nuxt generate", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "lintfix": "eslint --fix --ext .js,.vue --ignore-path .gitignore .", "precommit": "npm run lint" @@ -25,15 +24,18 @@ "devDependencies": { "babel-eslint": "^10.0.1", "babel-plugin-dynamic-import-node": "^2.2.0", + "cache-me-outside": "0.0.10", "eslint": "^5.9.0", "eslint-config-prettier": "^3.3.0", "eslint-friendly-formatter": "^3.0.0", "eslint-loader": "^2.1.1", "eslint-plugin-prettier": "^3.0.0", "eslint-plugin-vue": "5.0.0-beta.4", + "fs-extra": "^8.0.1", "node-sass": "^4.9.3", "nuxt-purgecss": "^0.2.1", "prettier": "1.15.2", + "rsync": "^0.6.1", "sass-loader": "^7.1.0" } }