UNPKG

sails-generate-new

Version:

Generate a new Sails app.

122 lines (106 loc) 4.1 kB
/** * Module dependencies */ var _ = require('lodash'); var util = require('util'); /** * * @param {[type]} scope [description] * @return {[type]} [description] */ module.exports = function dataForPackageJSON(scope) { var sailsPkg = scope.sailsPackageJSON || {}; // To determine the sails dep. to inject in the newly created package.json, // use `sails.prerelease` specified in the package.json of Sails itself. // If a `prerelease` version no. is not specified, just use `version` var sailsVersionDependency = (sailsPkg.sails && sailsPkg.sails.prerelease) || ('~' + sailsPkg.version); // List default dependencies used for apps with a frontend var dependenciesFrontAndBackend = { 'ejs': getDependencyVersion(sailsPkg, 'ejs'), 'grunt': getDependencyVersion(sailsPkg, 'grunt'), 'grunt-contrib-clean': getDependencyVersion(sailsPkg, 'grunt-contrib-clean'), 'grunt-contrib-coffee': getDependencyVersion(sailsPkg, 'grunt-contrib-coffee'), 'grunt-contrib-concat': getDependencyVersion(sailsPkg, 'grunt-contrib-concat'), 'grunt-contrib-copy': getDependencyVersion(sailsPkg, 'grunt-contrib-copy'), 'grunt-contrib-cssmin': getDependencyVersion(sailsPkg, 'grunt-contrib-cssmin'), 'grunt-contrib-jst': getDependencyVersion(sailsPkg, 'grunt-contrib-jst'), 'grunt-contrib-less': getDependencyVersion(sailsPkg, 'grunt-contrib-less'), 'grunt-contrib-uglify': getDependencyVersion(sailsPkg, 'grunt-contrib-uglify'), 'grunt-contrib-watch': getDependencyVersion(sailsPkg, 'grunt-contrib-watch'), 'grunt-sails-linker': getDependencyVersion(sailsPkg, 'grunt-sails-linker'), 'grunt-sync': getDependencyVersion(sailsPkg, 'grunt-sync'), 'include-all': getDependencyVersion(sailsPkg, 'include-all'), 'rc': getDependencyVersion(sailsPkg, 'rc'), 'sails': sailsVersionDependency, 'sails-disk': getDependencyVersion(sailsPkg, 'sails-disk') }; // List default dependencies used for back-end only apps (--no-frontend) var dependenciesBackendOnly = { 'include-all': getDependencyVersion(sailsPkg, 'include-all'), 'rc': getDependencyVersion(sailsPkg, 'rc'), 'sails': sailsVersionDependency, 'sails-disk': getDependencyVersion(sailsPkg, 'sails-disk') }; // Creating default package.json file content var defaultPackageJSONContent = { name: scope.appName, private: true, version: '0.0.0', description: scope.description || 'a Sails application', keywords: [], dependencies: (scope['frontend'] === false) ? dependenciesBackendOnly : dependenciesFrontAndBackend, scripts: { debug: 'node debug app.js', start: 'node app.js' }, main: 'app.js', repository: { type: 'git', url: util.format('git://github.com/%s/%s.git', scope.github.username, scope.appName) }, author: scope.author || '', license: '' }; // // Check for `packageJson` configuration // if (scope.packageJson && _.isObject(scope.packageJson)) { // // Adding new dependencies to package.json // _.merge(defaultPackageJSONContent, (scope.packageJson || {})); // // Remove dependencies that has false as version // If somebody don't need dependency it could be removed using passing to scope: // // ``` // packageJson: { // dependencies: { // ejs: false // } // } // ``` // if (scope.packageJson.dependencies) { defaultPackageJSONContent.dependencies = _.omit(defaultPackageJSONContent.dependencies, function(value) { return value === false; }); } } return _.defaults(scope.appPackageJSON || {}, defaultPackageJSONContent); }; /** * getDependencyVersion * * @param {Object} packageJSON * @param {String} module * @return {String} * @api private */ function getDependencyVersion(packageJSON, module) { return ( packageJSON.dependencies && packageJSON.dependencies[module] || packageJSON.devDependencies && packageJSON.devDependencies[module] || packageJSON.optionalDependencies && packageJSON.optionalDependencies[module] ); }