sails-generate-gruntfile
Advanced tools
Comparing version 0.10.5 to 0.10.6
@@ -16,5 +16,8 @@ /** | ||
// Make sure a "generated" dir exists for testing | ||
require('fs-extra').mkdirp(path.resolve(process.cwd(), 'generated')); | ||
var scope = { | ||
generatorType: 'gruntfile', | ||
rootPath: process.cwd(), | ||
rootPath: path.resolve(process.cwd(), 'generated'), | ||
modules: { | ||
@@ -21,0 +24,0 @@ 'gruntfile': path.resolve(__dirname, '../lib') |
@@ -9,3 +9,2 @@ /** | ||
*/ | ||
module.exports = { | ||
@@ -18,5 +17,9 @@ | ||
targets: { | ||
'./Gruntfile.js': { template: './Gruntfile.js' } | ||
'./Gruntfile.js': { template: './Gruntfile.js' }, | ||
'./grunt': { folder: {} }, | ||
'./grunt/config': { folder: {} }, | ||
'./grunt/register': { folder: {} } | ||
} | ||
}; | ||
{ | ||
"name": "sails-generate-gruntfile", | ||
"version": "0.10.5", | ||
"version": "0.10.6", | ||
"description": "Generate a gruntfile for Sails.", | ||
@@ -25,12 +25,9 @@ "main": "lib/index.js", | ||
"reportback": "*", | ||
"fs-extra": "*" | ||
"fs-extra": "~0.8.1" | ||
}, | ||
"sails": { | ||
"generator": { | ||
"name": "gruntfile", | ||
"sailsGenerator": { | ||
"type": "gruntfile", | ||
"behavior": "overrides `sails generate gruntfile`", | ||
"sailsVersion": "~0.10.0", | ||
"main": "lib/index" | ||
} | ||
"sailsVersion": "~0.10.0" | ||
} | ||
} |
@@ -0,7 +1,11 @@ | ||
var includeAll = require('sails/node_modules/include-all') | ||
, path = require('path'); | ||
/** | ||
* Gruntfile | ||
* | ||
* If you created your Sails app with `sails new foo --linker`, | ||
* the following files will be automatically injected (in order) | ||
* into the EJS and HTML files in your `views` and `assets` folders. | ||
* By default, the Gruntfile in new Sails projects comes with a `linker` | ||
* task, which will automatically inject client-side scripts, styles, and templates | ||
* from your `assets` folder into specific regions of certain EJS and HTML files | ||
* specified below. This behavior is completely optional, but here for convenience. | ||
* | ||
@@ -21,399 +25,41 @@ * At the top part of this file, you'll find a few of the most commonly | ||
/** | ||
* CSS files to inject in order | ||
* (uses Grunt-style wildcard/glob/splat expressions) | ||
* | ||
* By default, Sails also supports LESS in development and production. | ||
* To use SASS/SCSS, Stylus, etc., edit the `sails-linker:devStyles` task | ||
* below for more options. For this to work, you may need to install new | ||
* dependencies, e.g. `npm install grunt-contrib-sass` | ||
*/ | ||
configureGruntfile(); | ||
var cssFilesToInject = [ | ||
'linker/**/*.css' | ||
]; | ||
/** | ||
* Javascript files to inject in order | ||
* (uses Grunt-style wildcard/glob/splat expressions) | ||
* Load CommonJS submodules from the specified | ||
* relative path. | ||
* | ||
* To use client-side CoffeeScript, TypeScript, etc., edit the | ||
* `sails-linker:devJs` task below for more options. | ||
* @return {Object} | ||
*/ | ||
function loadTasks (relPath) { | ||
return includeAll({ | ||
dirname: path.resolve(__dirname, relPath), | ||
filter: /(.+)\.js$/ | ||
}); | ||
} | ||
var jsFilesToInject = [ | ||
// Below, as a demonstration, you'll see the built-in dependencies | ||
// linked in the proper order order | ||
// Bring in the socket.io client | ||
'linker/js/socket.io.js', | ||
// then beef it up with some convenience logic for talking to Sails.js | ||
'linker/js/sails.io.js', | ||
// A simpler boilerplate library for getting you up and running w/ an | ||
// automatic listener for incoming messages from Socket.io. | ||
'linker/js/app.js', | ||
// *-> put other dependencies here <-* | ||
// All of the rest of your app scripts imported here | ||
'linker/**/*.js' | ||
]; | ||
/** | ||
* Client-side HTML templates are injected using the sources below | ||
* The ordering of these templates shouldn't matter. | ||
* (uses Grunt-style wildcard/glob/splat expressions) | ||
* Invokes the config function for the task config and register definitions. | ||
* Make sure to pass in grunt. | ||
* | ||
* By default, Sails uses JST templates and precompiles them into | ||
* functions for you. If you want to use jade, handlebars, dust, etc., | ||
* edit the relevant sections below. | ||
* @param {Object} tasks [Grunt object that each task will need] | ||
*/ | ||
var templateFilesToInject = [ | ||
'linker/**/*.html' | ||
]; | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
// | ||
// DANGER: | ||
// | ||
// With great power comes great responsibility. | ||
// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
///////////////////////////////////////////////////////////////// | ||
// Modify css file injection paths to use | ||
cssFilesToInject = cssFilesToInject.map(function(path) { | ||
return '.tmp/public/' + path; | ||
}); | ||
// Modify js file injection paths to use | ||
jsFilesToInject = jsFilesToInject.map(function(path) { | ||
return '.tmp/public/' + path; | ||
}); | ||
templateFilesToInject = templateFilesToInject.map(function(path) { | ||
return 'assets/' + path; | ||
}); | ||
// Get path to core grunt dependencies from Sails | ||
var path = require('path'); | ||
var depsPath = 'node_modules'; | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-clean/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-copy/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-concat/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-sails-linker/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-jst/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-watch/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-uglify/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-cssmin/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-less/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-contrib-coffee/tasks')); | ||
grunt.loadTasks(path.join(depsPath, '/grunt-sync/tasks')); | ||
// Project configuration. | ||
grunt.initConfig({ | ||
pkg: grunt.file.readJSON('package.json'), | ||
copy: { | ||
dev: { | ||
files: [{ | ||
expand: true, | ||
cwd: './assets', | ||
src: ['**/*'], | ||
dest: '.tmp/public' | ||
}] | ||
}, | ||
build: { | ||
files: [{ | ||
expand: true, | ||
cwd: '.tmp/public', | ||
src: ['**/*'], | ||
dest: 'www' | ||
}] | ||
function invokeConfigFn (tasks) { | ||
for (var taskName in tasks) { | ||
if (tasks.hasOwnProperty(taskName)) { | ||
tasks[taskName](grunt); | ||
} | ||
}, | ||
sync: { | ||
dev: { | ||
files: [{ | ||
cwd: './assets', | ||
src: ['**/*.!(coffee)'], | ||
dest: '.tmp/public' | ||
}] | ||
} | ||
}, | ||
clean: { | ||
dev: ['.tmp/public/**'], | ||
build: ['www'] | ||
}, | ||
jst: { | ||
dev: { | ||
// To use other sorts of templates, specify the regexp below: | ||
// options: { | ||
// templateSettings: { | ||
// interpolate: /\{\{(.+?)\}\}/g | ||
// } | ||
// }, | ||
files: { | ||
'.tmp/public/jst.js': templateFilesToInject | ||
} | ||
} | ||
}, | ||
less: { | ||
dev: { | ||
files: [{ | ||
expand: true, | ||
cwd: 'assets/styles/', | ||
src: ['*.less'], | ||
dest: '.tmp/public/styles/', | ||
ext: '.css' | ||
}, { | ||
expand: true, | ||
cwd: 'assets/linker/styles/', | ||
src: ['*.less'], | ||
dest: '.tmp/public/linker/styles/', | ||
ext: '.css' | ||
}] | ||
} | ||
}, | ||
coffee: { | ||
dev: { | ||
options: { | ||
bare: true, | ||
sourceMap: true, | ||
sourceRoot: './' | ||
}, | ||
files: [{ | ||
expand: true, | ||
cwd: 'assets/js/', | ||
src: ['**/*.coffee'], | ||
dest: '.tmp/public/js/', | ||
ext: '.js' | ||
}, { | ||
expand: true, | ||
cwd: 'assets/linker/js/', | ||
src: ['**/*.coffee'], | ||
dest: '.tmp/public/linker/js/', | ||
ext: '.js' | ||
}] | ||
} | ||
}, | ||
/** | ||
* Production JS and CSS minification | ||
*/ | ||
concat: { | ||
js: { | ||
src: jsFilesToInject, | ||
dest: '.tmp/public/concat/production.js' | ||
}, | ||
css: { | ||
src: cssFilesToInject, | ||
dest: '.tmp/public/concat/production.css' | ||
} | ||
}, | ||
uglify: { | ||
dist: { | ||
src: ['.tmp/public/concat/production.js'], | ||
dest: '.tmp/public/min/production.js' | ||
} | ||
}, | ||
cssmin: { | ||
dist: { | ||
src: ['.tmp/public/concat/production.css'], | ||
dest: '.tmp/public/min/production.css' | ||
} | ||
}, | ||
/** | ||
* Automatically injects <link> and <script> tags | ||
*/ | ||
'sails-linker': { | ||
devJs: { | ||
options: { | ||
startTag: '<!--SCRIPTS-->', | ||
endTag: '<!--SCRIPTS END-->', | ||
fileTmpl: '<script src="%s"></script>', | ||
appRoot: '.tmp/public' | ||
}, | ||
files: { | ||
'.tmp/public/**/*.html': jsFilesToInject, | ||
'views/**/*.html': jsFilesToInject, | ||
'views/**/*.ejs': jsFilesToInject | ||
} | ||
}, | ||
prodJs: { | ||
options: { | ||
startTag: '<!--SCRIPTS-->', | ||
endTag: '<!--SCRIPTS END-->', | ||
fileTmpl: '<script src="%s"></script>', | ||
appRoot: '.tmp/public' | ||
}, | ||
files: { | ||
'.tmp/public/**/*.html': ['.tmp/public/min/production.js'], | ||
'views/**/*.html': ['.tmp/public/min/production.js'], | ||
'views/**/*.ejs': ['.tmp/public/min/production.js'] | ||
} | ||
}, | ||
devStyles: { | ||
options: { | ||
startTag: '<!--STYLES-->', | ||
endTag: '<!--STYLES END-->', | ||
fileTmpl: '<link rel="stylesheet" href="%s">', | ||
appRoot: '.tmp/public' | ||
}, | ||
// cssFilesToInject defined up top | ||
files: { | ||
'.tmp/public/**/*.html': cssFilesToInject, | ||
'views/**/*.html': cssFilesToInject, | ||
'views/**/*.ejs': cssFilesToInject | ||
} | ||
}, | ||
prodStyles: { | ||
options: { | ||
startTag: '<!--STYLES-->', | ||
endTag: '<!--STYLES END-->', | ||
fileTmpl: '<link rel="stylesheet" href="%s">', | ||
appRoot: '.tmp/public' | ||
}, | ||
files: { | ||
'.tmp/public/index.html': ['.tmp/public/min/production.css'], | ||
'views/**/*.html': ['.tmp/public/min/production.css'], | ||
'views/**/*.ejs': ['.tmp/public/min/production.css'] | ||
} | ||
}, | ||
// Bring in JST template object | ||
devTpl: { | ||
options: { | ||
startTag: '<!--TEMPLATES-->', | ||
endTag: '<!--TEMPLATES END-->', | ||
fileTmpl: '<script type="text/javascript" src="%s"></script>', | ||
appRoot: '.tmp/public' | ||
}, | ||
files: { | ||
'.tmp/public/index.html': ['.tmp/public/jst.js'], | ||
'views/**/*.html': ['.tmp/public/jst.js'], | ||
'views/**/*.ejs': ['.tmp/public/jst.js'] | ||
} | ||
} | ||
}, | ||
watch: { | ||
api: { | ||
// API files to watch: | ||
files: ['api/**/*'] | ||
}, | ||
assets: { | ||
// Assets to watch: | ||
files: ['assets/**/*'], | ||
// When assets are changed: | ||
tasks: ['syncAssets', 'linkAssets'] | ||
} | ||
} | ||
}); | ||
} | ||
// When Sails is lifted: | ||
grunt.registerTask('default', [ | ||
'compileAssets', | ||
'linkAssets', | ||
'watch' | ||
]); | ||
/** | ||
* Configure the gruntfile. | ||
*/ | ||
function configureGruntfile () { | ||
var taskConfigurations = loadTasks('./grunt/config'), | ||
registerDefinitions = loadTasks('./grunt/register'); | ||
grunt.registerTask('compileAssets', [ | ||
'clean:dev', | ||
'jst:dev', | ||
'less:dev', | ||
'copy:dev', | ||
'coffee:dev' | ||
]); | ||
grunt.registerTask('syncAssets', [ | ||
'jst:dev', | ||
'less:dev', | ||
'sync:dev', | ||
'coffee:dev' | ||
]); | ||
grunt.registerTask('linkAssets', [ | ||
// Update link/script/template references in `assets` index.html | ||
'sails-linker:devJs', | ||
'sails-linker:devStyles', | ||
'sails-linker:devTpl' | ||
]); | ||
// Build the assets into a web accessible folder. | ||
// (handy for phone gap apps, chrome extensions, etc.) | ||
grunt.registerTask('build', [ | ||
'compileAssets', | ||
'linkAssets', | ||
'clean:build', | ||
'copy:build' | ||
]); | ||
// When sails is lifted in production | ||
grunt.registerTask('prod', [ | ||
'clean:dev', | ||
'jst:dev', | ||
'less:dev', | ||
'copy:dev', | ||
'coffee:dev', | ||
'concat', | ||
'uglify', | ||
'cssmin', | ||
'sails-linker:prodJs', | ||
'sails-linker:prodStyles', | ||
'sails-linker:devTpl' | ||
]); | ||
invokeConfigFn(taskConfigurations); | ||
invokeConfigFn(registerDefinitions); | ||
} | ||
}; |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
15
14998
153
2