mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 02:44:55 +00:00
Use npm programmatically to install devDependencies
This commit is contained in:
parent
7ca8dd2074
commit
958448683f
@ -7,5 +7,5 @@
|
||||
"prefix": "",
|
||||
"static": true,
|
||||
"views": false,
|
||||
"websockets": true
|
||||
"websockets": false
|
||||
}
|
||||
|
||||
@ -22,11 +22,11 @@ module.exports = scope => {
|
||||
'version': '0.1.0',
|
||||
'description': 'A Strapi application.',
|
||||
'devDependencies': {
|
||||
"babel-eslint": "^7.1.1",
|
||||
"eslint": "^3.12.2",
|
||||
"eslint-config-airbnb": "^13.0.0",
|
||||
"eslint-plugin-import": "^2.2.0",
|
||||
"eslint-plugin-react": "^6.8.0"
|
||||
'babel-eslint': '^7.1.1',
|
||||
'eslint': '^3.12.2',
|
||||
'eslint-config-airbnb': '^13.0.0',
|
||||
'eslint-plugin-import': '^2.2.0',
|
||||
'eslint-plugin-react': '^6.8.0'
|
||||
},
|
||||
'dependencies': {
|
||||
'lodash': '4.x.x',
|
||||
|
||||
@ -10,6 +10,7 @@ const path = require('path');
|
||||
// Public node modules.
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs-extra');
|
||||
const npm = require('npm');
|
||||
|
||||
// Logger.
|
||||
const logger = require('strapi-utils').logger;
|
||||
@ -33,7 +34,7 @@ module.exports = (scope, cb) => {
|
||||
const missingDependencies = [];
|
||||
|
||||
// Verify if the dependencies are available into the global
|
||||
_.forEach(_.get(packageJSON, 'dependencies'), (value, key) => {
|
||||
_.forEach(_.merge(_.get(packageJSON, 'dependencies'), _.get(packageJSON, 'devDependencies')), (value, key) => {
|
||||
try {
|
||||
fs.accessSync(path.resolve(strapiRootPath, key), fs.constants.R_OK | fs.constants.W_OK);
|
||||
fs.symlinkSync(path.resolve(strapiRootPath, key), path.resolve(scope.rootPath, 'node_modules', key), 'dir');
|
||||
@ -50,13 +51,40 @@ module.exports = (scope, cb) => {
|
||||
logger.info('Your new application `' + scope.name + '` is ready at `' + scope.rootPath + '`.');
|
||||
|
||||
if (!_.isEmpty(missingDependencies)) {
|
||||
console.log();
|
||||
logger.warn('You should run `npm install` into your application before starting it.');
|
||||
console.log();
|
||||
logger.warn('Some dependencies could not be installed:');
|
||||
_.forEach(missingDependencies, value => logger.warn('• ' + value));
|
||||
console.log();
|
||||
}
|
||||
npm.load({loglevel: 'silent'}, function(err) {
|
||||
if (err) {
|
||||
console.log();
|
||||
logger.warn('You should run `npm install` into your application before starting it.');
|
||||
console.log();
|
||||
logger.warn('Some dependencies could not be installed:');
|
||||
_.forEach(missingDependencies, value => logger.warn('• ' + value));
|
||||
console.log();
|
||||
|
||||
return cb();
|
||||
return cb();
|
||||
}
|
||||
|
||||
const installDependency = (dependency, index) => {
|
||||
if (_.isEmpty(dependency)) {
|
||||
console.log();
|
||||
return cb();
|
||||
}
|
||||
|
||||
console.log();
|
||||
logger.info('Installing ' + dependency + '...');
|
||||
console.log();
|
||||
|
||||
npm.commands.install([dependency], (err) => {
|
||||
if (err) {
|
||||
console.log();
|
||||
logger.warn('You should run `npm install ' + dependency + '` into your application before starting it.');
|
||||
console.log();
|
||||
}
|
||||
|
||||
installDependency(missingDependencies[index++], index);
|
||||
});
|
||||
};
|
||||
|
||||
installDependency(missingDependencies[0], 0);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user