ruby-on-rails,gruntjs,gulp,sidekiq
Ok, I finally created a Node CLI to handle that case. Since I needed to be able to optimize files dynamically inside a folder, having a command line utility is somehow the best scenario : cli.js #!/usr/bin/env node 'use strict'; var meow = require('meow'); var fs = require('fs'); var optimizer...
Silly me, didn't fully read the documentation of the plugin :(. The solution is trivial, using the processName option: options: { client: true, amd: true, processName: function(path) { var pathChunks = path.split('.')[0].split('/'); return pathChunks[pathChunks.length - 1]; } } ...
You can use grunt concat concat: { dist: { src: [ 'startpage/file1.js', 'startpage/file2.js' ], dest: 'startpage.js' } }, ...
javascript,node.js,templates,gruntjs,task
You could try grunt-template which processed lo-dash templates. Here's a basic setup to solve your problem: //Gruntfile.js config.template = { myTask: { options: { data: function () { return { secret: 'ABC' }; } }, files: { 'output.html: ['template.html.tpl'] } } }; //template.html.tpl <html> <body> <span><%= secret %></span> </body> </html>...
javascript,node.js,gruntjs,jasmine
You could use grunt-exec, which just executes the value as if typed on the command line: module.exports = function (grunt) { grunt.initConfig({ exec: { jasmine: "jasmine" }, env: { test: { NODE_ENV: "test" } } }); grunt.loadNpmTasks("grunt-exec"); grunt.loadNpmTasks("grunt-env"); grunt.registerTask("test", [ "env:test", "exec:jasmine" ]); }; This will allow you to keep...
angularjs,gruntjs,yeoman,compass,grunt-contrib-compass
Just change your import to @import "icons/*.png"; Your current load paths (in compass) is already pointed to: app/styles/sprites/...
I don't think grunt-svg-sprite is doing anything particularly fancy with your SVG data. Most likely it's just copying it straight from the SVG files in src/app/assets/artwork/svgs. This is what the mail icon looks like (copied and pasted from the sprite data you provided, with the colour changed to black): <svg...
Using node-neat will return an array of the paths for both Bourbon and Neat. Try this: options: { style: "compressed", sourcemap : true, loadPath: require('node-neat').includePaths }, ...
The answer http://stackoverflow.com/a/15045126/519995 suggests using the parameter opts: {stdio: 'inherit'} to have the spawned output streamed into the parent output stream. That same answer also lists other alternatives: listening to data event, or piping the streams as you wish. Also, using timeouts to wait for async tasks is NOT a...
angularjs,gruntjs,yeoman,karma-jasmine,yeoman-generator-angular
Okay here's the error I was missing: Parse Error: <head "Access-Control-Allow-Origin: http://www.requesting-page.com"> I commented out the line <head "Access-Control-Allow-Origin: http://www.requesting-page.com"> From index.html and now it's building with out errors...
angularjs,gruntjs,npm,yeoman,http-server
I discovered that I had to run grunt to build the project which fixes the references and places a distribution uglified version of the project in a dist folder. This ran just fine on my other server.
You have maybe a corrupted cache : npm cache clean
I use grunt-sass as well and my usual SASS config looks like this: client: { options: { loadPath: ['<%= config.tmp %>/styles'], compass: false }, files: { '<%= config.tmp %>/styles/main.css': '<%= config.tmp %>/styles/main.scss' } } ...
angularjs,image,website,gruntjs,filezilla
I think image paths are broken because inside filerev:dist grunt task you are setting your images for file revision, which will return an unexpected name each time you build the project. Try to comment this line inside filerev:dist task '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', and re build the project....
angularjs,build,gruntjs,yeoman,yeoman-generator-angular
The root cause is you forgetting to update copy task You need add the new folder app/ to src list. copy: { dist: { files: [{ expand: true, dot: true, cwd: '<%= yeoman.app %>', dest: '<%= yeoman.dist %>', src: [ '*.{ico,png,txt}', '.htaccess', '*.html', 'views/{,*/}*.html', 'images/{,*/}*.{webp}', 'styles/fonts/{,*/}*.*' 'app/*' ] } ...
angularjs,caching,gruntjs,grunt-usemin
Found this issue discussed at three different places. The third link is closest to the solution. I finally ended up using vermin as a replacement task for filerev and usemin which internally executes both the tasks repeatedly until the filenames stop changing. It is shared as a gist here: https://gist.github.com/markrian/aa185c5ec66232a38a68...
javascript,gruntjs,jslint,beautify
According to the Brackets Beautify Documentation, it uses JS-Beautify internally. The documentation for the latter mentions these parameters: -n, --end-with-newline -p, --preserve-newlines If you can force Adobe Brackets to pass parameters to the js-beautify call, I guess one of these should do the trick. UPDATE According to the Github repo,...
gruntjs,grunt-contrib-concat,grunt-contrib-uglify
In grunt you can only define the config for a task once, but you can define multiple targets (with different names). So in your case you need to define two targets under the 'concat' task and then call them in sequence: module.exports = function(grunt) { grunt.initConfig({ pkg:grunt.file.readJSON('package.json'), concat: { step1:...
First thing, the way to pass an arg through the command line is to use :. For example to call hello directly: grunt hello:you To call it with multiple arguments, just separate them by :, like grunt hello:mister:president And to use these multiple arguments in the task, you do the...
You should try to use grunt-bower along with grunt-bower-install. You can configure bower to install copy files to specific folders. It will look like this: bower: { dev: { dest: 'lib/', js_dest: 'lib/js', css_dest: 'lib/styles' } } Then if you run the task: grunt bower You will have something like...
css,sass,gruntjs,zurb-foundation-5,libsass
Ok, so I did some sleuthing and looked into the grunt file and even though I'm not that great with grunt I saw this: watch: { grunt: { options: { reload: true }, files: ['Gruntfile.js'] }, sass: { files: 'scss/**/*.scss', tasks: ['sass'] } } With this I assumed that I...
javascript,gruntjs,grunt-contrib-copy
Try substring instead: rename: function(dest, src) { return dest + src.substring(0, src.indexOf('_')) + '.css'; } ...
javascript,node.js,testing,gruntjs,automated-tests
Grunt-contrib-watch makes you to do some task when the inspected file has changed. grunt-crontab can let you do some task at specific time, just like crontab. e.g in grunt setting: grunt-crontab example. { "jobs" : [ { "command": YOUR COMMAND, "schedule": "0 1 * * *", //Every day's 1:00...
Find where alias to grunt executable is located and check whether path to the file exist in PATH environment variable. If it doesn't exist, add path inside PATH. Normally, grunt executable is added inside, /usr/local/bin folder. But for my installation, it was placed inside /Users/<Username>/.node/bin folder. So I needed to...
gruntjs,less,grunt-contrib-less
Thanks to @seven-phases-max for the following answer! less-plugin-glob Allows you to use wildcards in @import statements! Works perfectly! // master.less @import "helpers/**/*.less"; @import "modules/**/*.less"; And all you need to add to your Grunt configuration is the plugins option: // Gruntfile.js grunt.initConfig({ less: { 'MASTER': { src: 'master.less', dest: 'master.css', options:...
The problem was that I was missing a package.json file. I simply never created one. I resolved the problem by running npm init to generate it...
I had this: grunt.registerTask("name_of_task", ["task_a", "task_b", "task_c"]); And "task_b" had to be executed after "task_a" was done. The problem is that "task_a" is asynchronous and returns right away, so I needed a way to give "task_a" a few seconds to execute. The solution: grunt.registerTask("name_of_task", ["task_a", "task_b:proxy", "task_c"]); grunt.registerTask("task_b:proxy", "task_b description",...
Why not simply include it? include ../partials/hero.jade +hero('My title') Include the file on all pages you need it at. And there are even plugins that can automatically detect and insert this stuff for you....
node.js,express,gruntjs,mean-stack
Express is a webserver framework on top of nodejs (like symphony for php). Grunt is an automation tool (like make or gulp) and not a webserver. The only thing they have in common is, that they use the JavaScript programming language. MEAN is a full stack environment for developing web...
You're having an infinite loop in your sass task, just remove the below line: grunt.registerTask('sass', ['sass']); ...
git,deployment,gruntjs,yeoman,branching-and-merging
From the doc of grunt-build-control, the point of the task is that you don't need to worry about it. The task expects a full branch that compiles to a build folder, and will handle the rest for you: building, then commiting the result to a local branch - and then...
gruntjs,grunt-usemin,grunt-contrib-cssmin
To add options in the generated config of the cssmin task , you will need to use the flow option in useminPrepare. useminPrepare: { html: 'index.html', options: { flow: { steps: { css: ['cssmin'] }, post: { css: [{ name: 'cssmin', createConfig: function (context, block) { var generated = context.options.generated;...
javascript,gruntjs,requirejs,r.js,grunt-contrib-requirejs
Yes, the grunt-contrib-* naming convention is for official grunt plugins. See here: https://github.com/gruntjs/grunt-contrib
javascript,node.js,gruntjs,connect
Two things: your 'connect' task currently blocks while waiting, you have to tell it to let the grunt process run asynchronously: call done() at the end ... server.listen(port); done(); }); now your build will end at the end of your task list, and take down your server with it. So...
javascript,node.js,command-line,gruntjs
Finally, I understand the logic of using Grunt tasks. When you have a web project application which need to use tasks grunt, it must have the Gruntfile.js in current directory. However, like as I said from my "edit 2", we can specified the Gruntfile.js with ---gruntfile option. So, it's not...
javascript,build,gruntjs,environment-variables
I find a combination of grunt-replace and grunt-config works well. In your Gruntfile.js, configure grunt-config like this (see the README): config: { local: { options: { variables: { mainroot: 'http://localhost:3000' } } }, test: { options: { variables: { mainroot: 'http://myapp-test.com' } } }, prod: { options: { variables: {...
javascript,node.js,selenium,gruntjs,nightwatch.js
you can give grunt-express-server a try and start the server before running the test, for example: npm install grunt-express-server --save-dev and modify the gruntfile: grunt.loadNpmTasks('grunt-express-server'); grunt.initConfig({ express: { options: { // Override defaults here }, dev: { options: { script: 'app.js' } }... // and finally, in the test task,...
javascript,node.js,gruntjs,nodemon
Rather than try to modify the output of nodemon, a cleaner approach would be for your application to log the timestamp when it starts up. If you use the util.log function rather than console.log, you'll get the timestamp added automatically to your log messages....
Change $http.get('/scripts/php/articles.php') to $http.get('http://YOURDOMAIN.COM/scripts/php/articles.php') Off course you need to replace YOURDOMAIN.COM with localhost or any other domain you are using....
The problem is due to your parameters for building the files object dynamically. You need to set the cwd parameter: "All src matches are relative to (but don't include) this path." files: [{ expand: true, cwd: 'sass/', src: '*.scss', dest: 'css/', ext: '.css' }] ...
It's can be achieved by using dynamic files mapping. For your case config will look like this: gruntConfig.babel = { options: { sourceMap: true }, dist: { files: [ { expand: true, cwd: 'src/', src: ['*.js'], dest: 'dist/' } ] } }; ...
node.js,gruntjs,minify,grunt-contrib-uglify
You're redefining the uglify task to run itself in your last line, replacing grunt-contrib-uglify: grunt.registerTask('uglify', ['uglify']); That's why your grunt is looping endlessly. Just give it a different name: grunt.registerTask('compress', ['uglify']); ...
jquery,angularjs,gruntjs,bower,grunt-wiredep
alternatives to removing/reordering jquery.js : if your index.html is using <ui-view /> then try changing it to this: <ui-view></ui-view> because of how HTML5 handles tags as explained in this SO post about tag syntax secondly, do a check of your routes, as explained in this SO post about referencing the...
javascript,node.js,gruntjs,minify,grunt-contrib-concat
It turns out that the wildcards that I was using for the directories was causing the error. i.e. src/js/**/*.js needed to be replaced with src/js/*/*.js I've been chasing this for too long! Grunt's documentation says to use double "*" for directory wildcards. For some reason, that's causing the ENOTSUP error...
Try this: YourTask: { dist: { files: { 'dist.<%= version %>.js', ........ } }, Register your build task like this: grunt.task.registerTask('build', 'build a specific version', function(version) { if (arguments.length === 0) { grunt.log.writeln(this.name + ", missing version"); } else { grunt.log.writeln(this.name + " version " + version); grunt.config.set('version', version); grunt.task.run([...
When you write console.log(this.data['five']()); it means "print out the return value of the function that is defined at this.data.five, that is: function() { grunt.log.writeln("Hi"); } This function has no explicit return, so its return value is undefined, and your code prints it out. To avoid this, change your code to:...
javascript,node.js,asynchronous,gruntjs
Looking at the source, you can see that it uses fs.writeFileSync "under the covers", so it is synchronous.
css3,sass,gruntjs,grunt-contrib-watch
You have to install Compass for Windows. Sorry, I am not an expert in Windows, but here is the tutorial on how to do that. Then make sure compass.bat is in your $PATH. After that it will compile with no error. I have also tried to compile tabs.scss in sassmeiser.com,...
Pretty lame, but it had to do with the indenting. Had to be: .select select -webkit-appearance: none -moz-appearance: none appearance: none ...
angularjs,gruntjs,yeoman,bower
Your question is very abroad... If you are using a 3rd party package that is not yours, you don't need to edit the gruntfile.js. However the gruntfile.js for your app will be created/edited to fit your app needs.
Looking at the source code of grunt-typescript, I think, the typescript compiler is loaded from node_modules and then if it is not found in the node_modules folder is loaded from the global environment. Relevant points in the source code : Import statement CreateProgram Node require documentation loading priority: https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders...
Are you sure "wwwroot/lib/angular/angular.js":["src/angular.min.js"] is correct in your uglify step? Uglify is for minifying files, so it would seem as if you have the destination and source parameters reversed. You are also getting the message Destination wwwroot/lib/angular/angular.js not written because src files were empty. which would seem to indicate that...
angularjs,gruntjs,bundling-and-minification
EDITED : The issue here seems to be ngMock being loaded in production environment, blocking the requests to load the templates. You should remove the ngMock dependency file when packaging you application ...
You need to set runInBackground: false. Why? runInBackground tells grunt: when true: to keep running the rest of the tasks. when false: to stop and wait on the server indefinitely. In your case, when set to true, there is no other task to run, so grunt terminates, and taks down...
javascript,gruntjs,grunt-prompt
The config key is directory. But your issue is that your call to grunt.config() is executed when the Gruntfile is read, way before the tasks are run. At that point, prompt has not run, so the option is undefined. You want something that will be only evaluated at runtime, so...
It will be way easier to add grunt-php to your existing Gruntfile. First install it in your project: npm install grunt-php --save-dev Then add the task config in your Gruntfile (for example between pkg and php-unit): php: { dist: { options: { base: 'build' } } }, And finally define...
You should insert it outside the bower section, like this: <!-- build:js(.) scripts/vendor.js --> <!-- bower:js --> <script src="bower_components/jquery/dist/jquery.js"></script> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> … <script src="bower_components/angular-loading-bar/build/loading-bar.js"></script> <script...
node.js,gruntjs,npm,gulp,bower
Ubuntu package nodejs provide a binary as a /usr/bin/nodejs, not a /usr/bin/node, so most of cli tools can't find it. To solve the problem you need to make a symlink: sudo ln -sT /usr/bin/nodejs /usr/bin/node ...
windows,git,gruntjs,filepath,slash
The \ (that's a backslash, not a slash) is a directory delimiter. The . is simply part of the directory name. .grunt-init and grunt-init are two distinct names, both perfectly valid. On Unix-like systems, file and directory names starting with . are hidden by default, which is why you'll often...
Option 0 grunt is a build tool and is generally not used to run servers other than local test servers. So the best solution is probably to get your server up and running using pm2 or forever or something else instead of grunt. As far as getting grunt running on...
angularjs,gruntjs,autoprefixer
It is probably the fact that grunt-autoprefixer doesn't find any files. If that is the case it will block grunt: https://github.com/nDmitry/grunt-autoprefixer/issues/115 My PR just got merged and this issue is fixed in grunt-autoprefixer 3.0.3....
node.js,gruntjs,grunt-contrib-cssmin
Your target is fine and works perfectly, so the issue is somewhere else in your code. Specifically, your last line shows that you are redefining your own cssmin task Loading "Gruntfile.js" tasks...[32mOK[39m + [36mbuildsass[39m, [36mconcatcss[39m, [36mcssmin[39m, [36mdefault[39m, [36mserver[39m This probably causes the infinite looping, call your own task another name...
javascript,gruntjs,html-email,middleman
You should store your variable in a JSON file and import it both into Middleman and Grunt.
For some strange reason, once I ran: npm remove -g grunt grunt-cli And re-ran: npm install -g grunt grunt-cli And everything was working!...
php,html,optimization,gruntjs,minify
if you want to create html file from php you can use PHP ob_start() function. So you create PHP file php2html.php php2html.php <?php ob_start(); include 'index.php'; file_put_contents('index.html', ob_get_clean()); then create exec task in GRUNT to call php2html.php script (read more about exec task https://github.com/jharding/grunt-exec ) Gruntfile.js module.exports = function(grunt) {...
javascript,node.js,socket.io,gruntjs,sails.js
This was due to an issue with the sails new app generator that has been fixed. The issue was that for any new app, the Grunt hook would be disabled, so that your assets would not be copied automatically into your app's .tmp/public folder at lift time. This is only...
You should place each module in it's own file. At least requireJS (are you using that?) determines the module name by it's file name (without the .js). So a file sitting in /modules/A.js will have the module name "modules/A". If you really want to define multiple modules in one file,...
javascript,node.js,gruntjs,npm,grunt-contrib-concat
In the last 2 lines of your Gruntfile.js you have redeclared the concat and wiredep tasks and when grunt tries to run your code, It stuck in an endless loop because concat refers to an undefined concat task, So you should remove these lines: grunt.registerTask('concat', ['concat']); grunt.registerTask('wiredep', ['wiredep']); In general,...
After reading @NLN answer where He mentioned that make sure each of them use different port number So i have start reading my Gruntfile.js file. In this file there is a connect object defined like this in applicationA grunt.initConfig({ connect: { options: { port: 9000, hostname: 'localhost', livereload: 35729 }...
node.js,git,gruntjs,githooks,gitbook
Some further consideration brought me to the right direction: Invoking a Git hook has a different login context than working on the server's command line. So running set > some-file in both contexts revealed significant differences in environment variables. Some experiments turned out that it was export HOME=/home/git that had...
gruntjs,angular-ui-bootstrap,bower
It can be done by using the following command grunt build:moduleName1:moduleName2:moduleName3....:moduleNameN For example if you require the build to contain only tabs and buttons module , then the grunt command will be like grunt build:tabs:buttons The generated files will be present in dist folder For the list of module names...
gruntjs,requirejs,grunt-contrib-requirejs
You can load RequireJS in Grunt, as follows: var requirejs = require('requirejs'); You can then fetch all the fileX.js files in your tree through Grunt: grunt.file.recurse('js/modules/', function callback(abspath, rootdir, subdir, filename) { if (filename === 'fileX.js') { /* Do something here. */ } } Once you have all the modules...
I think you were in the right track. This should help copy: { nightlyBuild: { files: [{ expand: true, cwd: '../', src: ['index.html'], dest: '<%= dest %>', }] } }, grunt.task.registerTask('copyTo', 'copy into a specific destination', function(dest) { if (arguments.length === 0) { grunt.log.writeln(this.name + ", missing destination"); } else...
If your CSS is in a Bower package, you can use grunt-wiredep: just include <!-- bower:css --> <!-- endbower --> in your html, and wiredep will replace it with links to the CSS from your Bower packages. If your CSS is your own, as far as I know there is...
javascript,node.js,meteor,gruntjs,isobuild
basically meteor doesn't ignore npm modules in the private directory, i've gone with the strategy of moving my grunt setup and assets outside of the meteor directory and have my assets moved by grunt into the public directory.
javascript,node.js,gruntjs,grunt-contrib-imagemin
I was able to get it work, by changing the following: grunt.registerTask('reactify', ['react']); I changed the name of the tasks. I think due to a cyclic nature of the internal design, it causes indefinite execution....
javascript,gruntjs,handlebars.js,yeoman,bower
I found my solution with the last line of this JSFiddle. I gave the tag where the template was an ID, and used: $('#tagIDName').append(template(driver)); instead of just template(driver);...
Try to disable sourcemap and see if it works. module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), sass: { dist: { options: { style: 'compressed', sourcemap: 'none' }, files: { 'css/style.css' : 'sass/style.scss' } } }, watch: { css: { files: '**/*.scss', tasks: ['sass'], options: { spawn: false } } },...
foreach,gruntjs,grunt-contrib-copy
The issue is that grunt.task.run does not run the task immediately, it just pushes it to the list of tasks to run later, while grunt.config.set executes immediately. So you end up with a list of 4 times the same task to execute. You can get what you want by defining...
twitter-bootstrap,gruntjs,gulp
I think you should use a package manager as Bower (http://bower.io/). Grunt/Gulp should not be used to download a third-party library....
angularjs,gruntjs,npm,sails.js
Seems that your grunt-ng-annotate reaquires grunt at least 0.4.5 you have 0.4.2 try to manually change version in your package.json. It should work. Try this : "dependencies": { "ejs": "~0.8.4", "fs-extra": "^0.12.0", "grunt": "0.4.5", "grunt-contrib-clean": "~0.5.0", "grunt-contrib-coffee": "~0.10.1", "grunt-contrib-concat": "~0.3.0", "grunt-contrib-copy": "~0.5.0", "grunt-contrib-cssmin": "~0.9.0", "grunt-contrib-jst": "~0.6.0", "grunt-contrib-less": "0.11.1", "grunt-contrib-requirejs": "^0.4.4",...
Check is package.json file exists in your www directory and has main js set inside. It should be something like: { "name" : "your-app", "version" : "0.1.0", "main" : "main.js" } ...
angularjs,.htaccess,gruntjs,yeoman-generator,yeoman-generator-angular
.htaccess files are specific for apache server, but you are running grunt, so all .htaccess files are ignored. You should not use Grunt as your production server, since it is designed to local development environment only. Take a look here: can grunt server use for production application deployment Files generated...
Done! Just place this in head tag <!-- bower:css --> <!-- endbower --> <!-- bower:js --> <!-- endbower --> And run grunt bowerInstall again...
Your version of grunt-contrib-copy is 0.4.0. As correctly point out by @nemesv above the property name to use in this version would be processContent not process. I cloned your repo and switched to json-breakpoints branch. And ran grunt copy:js and it replaced the content. Now,when you run grunt copy:js --verbose...
css,gruntjs,relative-path,grunt-contrib-cssmin
I think you need to set rebase to true, and set the paths appropriately. I was struggling with that too, and it was not obvious. After a bit of trial and error i got it to work like this. grunt.initConfig({ cssmin: { options: { relativeTo: "./Main/img", target: "./build", rebase: true...
angularjs,gruntjs,ng-grid,angular-ui-grid
My issue was related to an odd http interception. When ui-grid was added, it was triggering a get request to http://localhost:xxxx/ng-grid/ng-grid, which was breaking the grid and throwing the error. ('uiGrid' must have exactly one root element. ui-grid/ui-grid) Added an intercepter rule to ignore that url format and then the...
angularjs,asp.net-web-api,gruntjs
Try to specify your problem. Google knows tons of article about Grunt in VS 2013/2015. Introducing Gulp, Grunt, Bower, and npm support for Visual Studio Grunt Launcher Task Runner Explorer Using Grunt, Gulp and Bower in Visual Studio 2013 and 2015 Configure Grunt in Visual Studio 2015 and so on....
The problem is that your task is asynchronous, but you're treating it as an asynchronous task. Your task finishes and your process exists, but you still haven't created your table and executed your insert. What you need to do is add one line right underneath registerTask that creates a done...
I was able to fix this by changing the command from an array to a string. "scripts": { "postinstall": "./node_modules/bower/bin/bower install && ./node_modules/protractor/bin/webdriver-manager update" } ...
gruntjs,grunt-contrib-copy,gruntfile
grunt.file.copy does not provide any option for that, unfortunately. But the grunt copy task (from grunt-contrib-copy) has an option for that (options.mode, see https://github.com/gruntjs/grunt-contrib-copy#mode)....
sass,gruntjs,yeoman,yeoman-generator,gruntfile
Issue is with the watch task for sass sass: { files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], tasks: ['sass:server', 'autoprefixer'] } Change this to sass: { files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], tasks: ['sass:server', 'autoprefixer:server'] } Currently as the whole autoprefixer task runs on change of SASS file , both its subtasks also run ,...
Your problem is related with the bundleExec parameter. If you set it to true, the plugin will expect the gem installed via bundler. You have to set it to false, and I think it will works. scsslint: { allFiles: [ 'src/scss/**/*.scss', ], options: { bundleExec: false, config: '.scss-lint.yml', reporterOutput: 'scss-lint-report.xml',...