From e0bb77efbbb460c82d081b6f0a1ef7742ec5feb0 Mon Sep 17 00:00:00 2001 From: NGPixel Date: Tue, 14 Feb 2017 20:48:39 -0500 Subject: [PATCH] npm installation feature --- README.md | 17 +++++++++-------- npm/README.md | 31 ++++++++++++++++++++++++++++++- npm/install.js | 35 ++++++++++++++++++++++++++++++----- npm/package.json | 5 ++--- package.json | 4 ++-- 5 files changed, 73 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 2a960dbc..1902efba 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,15 @@ # Wiki.js -[![Release](https://img.shields.io/github/release/Requarks/wiki.svg?maxAge=3600)](https://github.com/Requarks/wiki/releases) -[![License](https://img.shields.io/badge/license-AGPLv3-blue.svg)](https://github.com/requarks/wiki/blob/master/LICENSE) -[![Github All Releases](https://img.shields.io/github/downloads/Requarks/wiki/total.svg)](https://github.com/Requarks/wiki/releases/latest) -[![Build Status](https://travis-ci.org/Requarks/wiki.svg?branch=master)](https://travis-ci.org/Requarks/wiki) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1d0217a3153c4595bdedb322263e55c8)](https://www.codacy.com/app/Requarks/wiki) -[![Dependency Status](https://gemnasium.com/badges/github.com/Requarks/wiki.svg)](https://gemnasium.com/github.com/Requarks/wiki) -[![Known Vulnerabilities](https://snyk.io/test/github/requarks/wiki/badge.svg)](https://snyk.io/test/github/requarks/wiki) -[![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) +[![Release](https://img.shields.io/github/release/Requarks/wiki.svg?style=flat-square&maxAge=3600)](https://github.com/Requarks/wiki/releases) +[![License](https://img.shields.io/badge/license-AGPLv3-blue.svg?style=flat-square)](https://github.com/requarks/wiki/blob/master/LICENSE) +[![npm](https://img.shields.io/badge/npm-wiki.js-blue.svg?style=flat-square)](https://www.npmjs.com/package/wiki.js) +[![Github All Releases](https://img.shields.io/github/downloads/Requarks/wiki/total.svg?style=flat-square)](https://github.com/Requarks/wiki/releases/latest) +[![Build Status](https://img.shields.io/travis/Requarks/wiki/master.svg?style=flat-square)](https://travis-ci.org/Requarks/wiki) +[![Codacy Badge](https://img.shields.io/codacy/grade/1d0217a3153c4595bdedb322263e55c8/master.svg?style=flat-square)](https://www.codacy.com/app/Requarks/wiki) +[![Dependency Status](https://img.shields.io/gemnasium/Requarks/wiki.svg?style=flat-square)](https://gemnasium.com/github.com/Requarks/wiki) +[![Known Vulnerabilities](https://snyk.io/test/github/requarks/wiki/badge.svg?style=flat-square)](https://snyk.io/test/github/requarks/wiki) +[![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](http://standardjs.com/) ##### A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown *Under active development* diff --git a/npm/README.md b/npm/README.md index 91d2ed7c..12427fe2 100644 --- a/npm/README.md +++ b/npm/README.md @@ -1 +1,30 @@ -Under development + + Wiki.js + + +# Wiki.js + +[![npm](https://img.shields.io/npm/v/wiki.js.svg?style=flat-square)](https://github.com/Requarks) +[![Release](https://img.shields.io/github/release/Requarks/wiki.svg?style=flat-square&maxAge=3600)](https://github.com/Requarks/wiki/releases) +[![License](https://img.shields.io/badge/license-AGPLv3-blue.svg?style=flat-square)](https://github.com/requarks/wiki/blob/master/LICENSE) + +##### A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown + +This npm package is an installer for Wiki.js. For information about Wiki.js, use the following links: + +- [Official Website](https://wiki.requarks.io/) +- [Installation Guide](https://wiki.requarks.io/get-started.html) +- [GitHub Repository](https://github.com/Requarks/wiki) + +### Install Wiki.js using npm + +1. Create an empty folder where Wiki.js will run. +2. Launch a terminal / command prompt inside this newly created folder. +3. Run the command: `npm install wiki.js@latest` +4. Wait for the installation process to complete. This may take several minutes. +5. Edit the file `config.yml` located in the root of your folder and change the settings accordingly. +6. Run the command: `node wiki start` + +### Install Wiki.js manually + +For a manual installation, read the [Installation Guide](https://wiki.requarks.io/get-started.html). diff --git a/npm/install.js b/npm/install.js index 9edd3ed8..921c4c04 100644 --- a/npm/install.js +++ b/npm/install.js @@ -2,6 +2,7 @@ const ora = require('ora')('Initializing...').start() const Promise = require('bluebird') +const exec = require('child_process').exec const fs = Promise.promisifyAll(require('fs-extra')) const https = require('follow-redirects').https const path = require('path') @@ -41,23 +42,47 @@ fs.readJsonAsync('package.json').then((packageObj) => { }) }) }) +}).then(() => { + return new Promise((resolve, reject) => { + ora.text = 'Installing Wiki.js npm dependencies...' + let npmInstallProc = exec('npm install --only=production', { + cwd: installDir + }) + npmInstallProc.stdout.pipe(process.stdout) + npmInstallProc.on('error', err => { + reject(err) + }) + .on('exit', () => { + ora.text = 'Wiki.js npm dependencies installed successfully.' + resolve(true) + }) + }) }).then(() => { fs.accessAsync(path.join(installDir, 'config.yml')).then(() => { /** * Upgrade mode */ ora.text = 'Upgrade succeeded. Reloading Wiki.js...' - return pm2.restartAsync('wiki').catch(err => { // eslint-disable-line handle-callback-err - return new Error('Unable to restart Wiki.js via pm2... Do a manual restart!') - }).then(() => { - ora.succeed('Wiki.js has restarted. Upgrade completed.') + return pm2.connectAsync().then(() => { + return pm2.restartAsync('wiki').catch(err => { // eslint-disable-line handle-callback-err + return new Error('Unable to restart Wiki.js via pm2... Do a manual restart!') + }).then(() => { + ora.succeed('Wiki.js has restarted. Upgrade completed.') + }) + }).catch(err => { + ora.fail(err) + }).finally(() => { + pm2.disconnect() }) }).catch(err => { /** * Install mode */ if (err.code === 'ENOENT') { - ora.succeed('Installation succeeded. You can now continue with the configuration steps. Check out https://docs.wiki.requarks.io/install for more info.') + ora.text = 'First-time install, creating a new config.yml...' + return fs.copyAsync(path.join(installDir, 'config.sample.yml'), path.join(installDir, 'config.yml')).then(() => { + ora.succeed('Installation succeeded. You can now continue with the configuration steps. Check out https://docs.wiki.requarks.io/install for more info.') + }) } else { return err } diff --git a/npm/package.json b/npm/package.json index fc89d672..0acde83d 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,12 +1,11 @@ { "name": "wiki.js", - "version": "1.0.0-beta.6", + "version": "1.0.0-beta.7", "description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown", "main": "install.js", "scripts": { "test": "exit 1", - "install": "node install.js", - "preuninstall": "node uninstall.js" + "postinstall": "node install.js" }, "repository": { "type": "git", diff --git a/package.json b/package.json index 3a5d3c96..15f0f5e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wiki", - "version": "1.0.0-beta.6", + "version": "1.0.0-beta.7", "description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown", "main": "server.js", "scripts": { @@ -89,7 +89,7 @@ "pug": "^2.0.0-beta11", "read-chunk": "^2.0.0", "remove-markdown": "^0.1.0", - "requarks-core": "^0.2.1", + "requarks-core": "^0.2.2", "request": "^2.79.0", "search-index": "^0.9.9", "serve-favicon": "^2.3.2",