{"action":"created","issue":{"url":"https://api.github.com/repos/jooby-project/jooby/issues/192","labels_url":"https://api.github.com/repos/jooby-project/jooby/issues/192/labels{/name}","comments_url":"https://api.github.com/repos/jooby-project/jooby/issues/192/comments","events_url":"https://api.github.com/repos/jooby-project/jooby/issues/192/events","html_url":"https://github.com/jooby-project/jooby/issues/192","id":106011270,"number":192,"title":"asset module","user":{"login":"jknack","id":1301129,"avatar_url":"https://avatars.githubusercontent.com/u/1301129?v=3","gravatar_id":"","url":"https://api.github.com/users/jknack","html_url":"https://github.com/jknack","followers_url":"https://api.github.com/users/jknack/followers","following_url":"https://api.github.com/users/jknack/following{/other_user}","gists_url":"https://api.github.com/users/jknack/gists{/gist_id}","starred_url":"https://api.github.com/users/jknack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jknack/subscriptions","organizations_url":"https://api.github.com/users/jknack/orgs","repos_url":"https://api.github.com/users/jknack/repos","events_url":"https://api.github.com/users/jknack/events{/privacy}","received_events_url":"https://api.github.com/users/jknack/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/jooby-project/jooby/labels/new%20feature","name":"new feature","color":"60b044"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/jooby-project/jooby/milestones/23","html_url":"https://github.com/jooby-project/jooby/milestones/0.11.0","labels_url":"https://api.github.com/repos/jooby-project/jooby/milestones/23/labels","id":1295782,"number":23,"title":"0.11.0","description":"","creator":{"login":"jknack","id":1301129,"avatar_url":"https://avatars.githubusercontent.com/u/1301129?v=3","gravatar_id":"","url":"https://api.github.com/users/jknack","html_url":"https://github.com/jknack","followers_url":"https://api.github.com/users/jknack/followers","following_url":"https://api.github.com/users/jknack/following{/other_user}","gists_url":"https://api.github.com/users/jknack/gists{/gist_id}","starred_url":"https://api.github.com/users/jknack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jknack/subscriptions","organizations_url":"https://api.github.com/users/jknack/orgs","repos_url":"https://api.github.com/users/jknack/repos","events_url":"https://api.github.com/users/jknack/events{/privacy}","received_events_url":"https://api.github.com/users/jknack/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":1,"state":"open","created_at":"2015-09-08T15:39:36Z","updated_at":"2015-09-30T23:22:06Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2015-09-11T13:29:30Z","updated_at":"2015-09-30T23:37:42Z","closed_at":"2015-09-30T23:22:06Z","body":"next version will comes with an asset module (similar to grails/rails asset pipeline)\r\n\r\n```java\r\n{\r\n  use(\r\n     new Assets()\r\n       .on(\"dev\", () -> Arrays.asList(new Replacer(), new JsHint(), new Sass()))\r\n       .on(\"*\", () -> Arrays.asList(new Replacer(), new Concat(), new Sass(), new Uglify()))\r\n     );\r\n}\r\n```\r\n\r\nIn dev, processors run at runtime, otherwise at build time via maven plugin.\r\n\r\nAsset descriptor will look like:\r\n\r\n```properties\r\nfilesets {\r\n  base: [lib/jquery.js, css/normalize.css]\r\n\r\n  home {\r\n    src: [js/home.js, css/home.css]\r\n    ext: [base]\r\n  }\r\n}\r\n```\r\n\r\nWhere ```home``` is the name of the view that requires these assets:\r\n\r\n```html\r\n<html>\r\n<head>\r\n{{home.css}}\r\n</head>\r\n<body>\r\n{{home.js}}\r\n</body>\r\n</html>\r\n```\r\n\r\n```{{home.css}}``` and ```{{home.js}}``` on ```dev``` will be expanded to each of the files defined in the asset descriptor.  on ```prod```  to just one line with the bundled/minified version.\r\n\r\n@paulovictorv I know you have preference for node.js/grunt/... but I would love to get your feedback here for a Java solution."},"comment":{"url":"https://api.github.com/repos/jooby-project/jooby/issues/comments/144575048","html_url":"https://github.com/jooby-project/jooby/issues/192#issuecomment-144575048","issue_url":"https://api.github.com/repos/jooby-project/jooby/issues/192","id":144575048,"user":{"login":"jknack","id":1301129,"avatar_url":"https://avatars.githubusercontent.com/u/1301129?v=3","gravatar_id":"","url":"https://api.github.com/users/jknack","html_url":"https://github.com/jknack","followers_url":"https://api.github.com/users/jknack/followers","following_url":"https://api.github.com/users/jknack/following{/other_user}","gists_url":"https://api.github.com/users/jknack/gists{/gist_id}","starred_url":"https://api.github.com/users/jknack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jknack/subscriptions","organizations_url":"https://api.github.com/users/jknack/orgs","repos_url":"https://api.github.com/users/jknack/repos","events_url":"https://api.github.com/users/jknack/events{/privacy}","received_events_url":"https://api.github.com/users/jknack/received_events","type":"User","site_admin":false},"created_at":"2015-09-30T23:37:42Z","updated_at":"2015-09-30T23:37:42Z","body":"It is done. documentation is here: https://github.com/jooby-project/jooby/tree/master/md/doc/assets and here: https://github.com/jooby-project/jooby/blob/master/md/asset-processor.md\r\n\r\nI moved away from nashorn! and give it a try to: https://github.com/eclipsesource/J2V8\r\n\r\nwill release in a few days (next week probably) but if you can have a look at the commit and provide feedback, I will appreciate very much!"}}