Merge pull request #2557 from strapi/improve-strapi-new

Improve strapi new
This commit is contained in:
Jim LAURIE 2019-01-03 14:09:03 +01:00 committed by GitHub
commit 2f8e5bcdb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 46 additions and 9 deletions

View File

@ -10,7 +10,7 @@ Create a new project
```bash ```bash
strapi new <name> strapi new <name>
options: [--dev|--dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbname=<dbname> --dbusername=<dbusername> --dbpassword=<dbpassword> --dbssl=<dbssl> --dbauth=<dbauth>] options: [--dev|--debug|--dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbname=<dbname> --dbusername=<dbusername> --dbpassword=<dbpassword> --dbssl=<dbssl> --dbauth=<dbauth>]
``` ```
- **strapi new &#60;name&#62;**<br/> - **strapi new &#60;name&#62;**<br/>
@ -19,6 +19,9 @@ options: [--dev|--dbclient=<dbclient> --dbhost=<dbhost> --dbport=<dbport> --dbna
- **strapi new &#60;name&#62; --dev**<br/> - **strapi new &#60;name&#62; --dev**<br/>
Generates a new project called **&#60;name&#62;** and creates symlinks for the `./admin` folder and each plugin inside the `./plugin` folder. It means that the Strapi's development workflow has been set up on the machine earlier. Generates a new project called **&#60;name&#62;** and creates symlinks for the `./admin` folder and each plugin inside the `./plugin` folder. It means that the Strapi's development workflow has been set up on the machine earlier.
- **strapi new &#60;name&#62; --debug**<br/>
Will display the full error message if one is fired during the database connection.
- **strapi new &#60;name&#62; --dbclient=&#60;dbclient&#62; --dbhost=&#60;dbhost&#62; --dbport=&#60;dbport&#62; --dbname=&#60;dbname&#62; --dbusername=&#60;dbusername&#62; --dbpassword=&#60;dbpassword&#62; --dbssl=&#60;dbssl&#62; --dbauth=&#60;dbauth&#62;**<br/> - **strapi new &#60;name&#62; --dbclient=&#60;dbclient&#62; --dbhost=&#60;dbhost&#62; --dbport=&#60;dbport&#62; --dbname=&#60;dbname&#62; --dbusername=&#60;dbusername&#62; --dbpassword=&#60;dbpassword&#62; --dbssl=&#60;dbssl&#62; --dbauth=&#60;dbauth&#62;**<br/>
Generates a new project called **&#60;name&#62;** and skip the interactive database configuration and initilize with these options. Generates a new project called **&#60;name&#62;** and skip the interactive database configuration and initilize with these options.
- **&#60;dbclient&#62;** can be `mongo`, `postgres`, `mysql`. - **&#60;dbclient&#62;** can be `mongo`, `postgres`, `mysql`.

View File

@ -226,6 +226,7 @@ module.exports = (scope, cb) => {
} }
let cmd = `${packageCmd} ${scope.client.connector}@${scope.strapiPackageJSON.version}`; let cmd = `${packageCmd} ${scope.client.connector}@${scope.strapiPackageJSON.version}`;
let linkNodeModulesCommand = `cd ${scope.tmpPath} && npm link ${scope.client.connector}`;
if (scope.client.module) { if (scope.client.module) {
cmd += ` ${scope.client.module}`; cmd += ` ${scope.client.module}`;
@ -233,6 +234,7 @@ module.exports = (scope, cb) => {
if (scope.client.connector === 'strapi-hook-bookshelf') { if (scope.client.connector === 'strapi-hook-bookshelf') {
cmd += ` strapi-hook-knex@${scope.strapiPackageJSON.version}`; cmd += ` strapi-hook-knex@${scope.strapiPackageJSON.version}`;
linkNodeModulesCommand += ` && npm link strapi-hook-knex`;
scope.additionalsDependencies = ['strapi-hook-knex', 'knex']; scope.additionalsDependencies = ['strapi-hook-knex', 'knex'];
} }
@ -248,7 +250,13 @@ module.exports = (scope, cb) => {
} }
} }
resolve(); if (scope.developerMode) {
exec(linkNodeModulesCommand, () => {
resolve();
});
} else {
resolve();
}
}); });
}) })
]; ];
@ -258,8 +266,8 @@ module.exports = (scope, cb) => {
try { try {
require(path.join(`${scope.tmpPath}`, '/node_modules/', `${scope.client.connector}/lib/utils/connectivity.js`))(scope, cb.success, connectionValidation); require(path.join(`${scope.tmpPath}`, '/node_modules/', `${scope.client.connector}/lib/utils/connectivity.js`))(scope, cb.success, connectionValidation);
} catch(err) { } catch(err) {
shell.rm('-r', scope.tmpPath);
console.log(err); console.log(err);
shell.rm('-r', scope.tmpPath);
cb.error(); cb.error();
} }
}); });

View File

@ -1,12 +1,24 @@
'use strict'; 'use strict';
// Core
const path = require('path');
// Public node modules // Public node modules
const inquirer = require('inquirer'); const inquirer = require('inquirer');
const rimraf = require('rimraf'); const rimraf = require('rimraf');
module.exports = (scope, success, error) => { module.exports = (scope, success, error) => {
// eslint-disable-next-line import/no-unresolved let knex;
const knex = require('knex')({
try {
// eslint-disable-next-line import/no-unresolved
knex = require('knex');
} catch (err) {
// eslint-disable-next-line import/no-unresolved
knex = require(path.resolve(scope.tmpPath, 'node_modules', 'knex'));
}
knex = knex({
client: scope.client.module, client: scope.client.module,
connection: Object.assign({}, scope.database.settings, { connection: Object.assign({}, scope.database.settings, {
user: scope.database.settings.username user: scope.database.settings.username
@ -48,10 +60,16 @@ module.exports = (scope, success, error) => {
}) })
.catch((err) => { .catch((err) => {
if (err.sql) { if (err.sql) {
console.log('⚠️ Server connection has failed! Make sure your database server is running.'); console.log('⚠️ Server connection has failed! Make sure your database server is running.');
} else { } else {
console.log(`⚠️ Database connection has failed! Make sure your "${scope.database.settings.database}" database exist.`); console.log(`⚠️ Database connection has failed! Make sure your "${scope.database.settings.database}" database exist.`);
} }
if (scope.debug) {
console.log('🐛 Full error log:');
console.log(err);
}
error(); error();
}); });
}; };

View File

@ -29,7 +29,13 @@ module.exports = (scope, success, error) => {
Mongoose.connect(`mongodb${srv ? '+srv' : ''}://${scope.database.settings.host}${!srv ? `:${scope.database.settings.port}` : ''}/`, connectOptions, function (err) { Mongoose.connect(`mongodb${srv ? '+srv' : ''}://${scope.database.settings.host}${!srv ? `:${scope.database.settings.port}` : ''}/`, connectOptions, function (err) {
if (err) { if (err) {
console.log('⚠️ Database connection has failed! Make sure your database is running.'); console.log('⚠️ Database connection has failed! Make sure your database is running.');
if (scope.debug) {
console.log('🐛 Full error log:');
console.log(err);
}
return error(); return error();
} }

View File

@ -42,7 +42,8 @@ module.exports = function (name, cliArguments) {
generatorType: 'new', generatorType: 'new',
name, name,
strapiPackageJSON: packageJSON, strapiPackageJSON: packageJSON,
developerMode developerMode,
debug: cliArguments.debug !== undefined
}; };
const dbArguments = ['dbclient', 'dbhost', 'dbport', 'dbname', 'dbusername', 'dbpassword']; const dbArguments = ['dbclient', 'dbhost', 'dbport', 'dbname', 'dbusername', 'dbpassword'];

View File

@ -53,6 +53,7 @@ program
program program
.command('new') .command('new')
.option('-d, --dev', 'Development mode') .option('-d, --dev', 'Development mode')
.option('--debug', 'Display database connection error')
.option('--dbclient <dbclient>', 'Database client') .option('--dbclient <dbclient>', 'Database client')
.option('--dbhost <dbhost>', 'Database host') .option('--dbhost <dbhost>', 'Database host')
.option('--dbport <dbport>', 'Database port') .option('--dbport <dbport>', 'Database port')