Reputation: 1734
Downloaded Polymer starter kit 1.3.0 on MAC OSX El Capitan 10.11.4
Node.js V6.0.0
Followed direction here: https://github.com/PolymerElements/polymer-starter-kit#getting-started
gulp command gives following error. Help please!
Upvotes: 0
Views: 87
Reputation:
I think it's a bug in gulp-if
(which pipes *.js to gulp-uglify
) when running under Node v6.0.0. The log error shows that gulp-uglify
is choking on app/styles/main.css
, which is odd since it's only supposed to be given *.js.
{ Error
at new JS_Parse_Error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1526:18)
at js_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1534:11)
at croak (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2026:9)
at token_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2034:9)
at unexpected (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2040:9)
at semicolon (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2060:56)
at simple_statement (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2240:73)
at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2113:19)
at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2073:24)
at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2827:23)
message: '/Users/tony/Downloads/polymer-starter-kit-1.3.0/app/styles/main.css: Unexpected token: punc ({)',
fileName: '/Users/tony/Downloads/polymer-starter-kit-1.3.0/app/styles/main.css',
lineNumber: 10,
stack: 'Error\n at new JS_Parse_Error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1526:18)\n at js_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1534:11)\n at croak (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2026:9)\n at token_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2034:9)\n at unexpected (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2040:9)\n at semicolon (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2060:56)\n at simple_statement (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2240:73)\n at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2113:19)\n at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2073:24)\n at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2827:23)',
showStack: false,
showProperties: true,
plugin: 'gulp-uglify' }
A workaround is to downgrade Node to 5.11.0 (e.g., $ brew switch node 5.11.0
).
UPDATE: I tracked the issue down to gulp-match
, which is used by gulp-if
to check whether the given filename matches a pattern.
You can use this workaround with Node 6.0.0 or earlier versions:
In Polymer Starter Kit's gulpfile.js
, add the following:
var filter = function(pattern) {
return function(file) {
if (typeof pattern === 'string') {
var newCond = pattern.substring(1).replace(/\./g,'\\.')+'$';
pattern = new RegExp(newCond);
}
return pattern.test(file.relative);
};
};
var _if = function(pattern, trueChild, falseChild, minimatchOptions) {
return $.if(filter(pattern), trueChild, falseChild, minimatchOptions);
};
In optimizeHtmlTask()
, replace $.if
with _if
.
See Polymer Issue #880, gulp-match issue #12
Upvotes: 1