{"action":"created","issue":{"url":"https://api.github.com/repos/sighjs/sigh/issues/18","labels_url":"https://api.github.com/repos/sighjs/sigh/issues/18/labels{/name}","comments_url":"https://api.github.com/repos/sighjs/sigh/issues/18/comments","events_url":"https://api.github.com/repos/sighjs/sigh/issues/18/events","html_url":"https://github.com/sighjs/sigh/issues/18","id":128523853,"number":18,"title":"Question about feature set","user":{"login":"rosenfeld","id":32246,"avatar_url":"https://avatars.githubusercontent.com/u/32246?v=3","gravatar_id":"","url":"https://api.github.com/users/rosenfeld","html_url":"https://github.com/rosenfeld","followers_url":"https://api.github.com/users/rosenfeld/followers","following_url":"https://api.github.com/users/rosenfeld/following{/other_user}","gists_url":"https://api.github.com/users/rosenfeld/gists{/gist_id}","starred_url":"https://api.github.com/users/rosenfeld/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rosenfeld/subscriptions","organizations_url":"https://api.github.com/users/rosenfeld/orgs","repos_url":"https://api.github.com/users/rosenfeld/repos","events_url":"https://api.github.com/users/rosenfeld/events{/privacy}","received_events_url":"https://api.github.com/users/rosenfeld/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":15,"created_at":"2016-01-25T12:13:01Z","updated_at":"2016-01-25T18:21:46Z","closed_at":null,"body":"Hi, I'm currently evaluating a switch from the Rails Assets Pipeline (sprockets) to a better resources build system. I was able to find everything I needed feature-wise in Webpack but I didn't settled on it because it doesn't support incremental builds so that I could deploy new changes quickly.\r\n\r\nWhile searching for alternatives I found that Sigh does support incremental building but I'm not sure about the full set of features. So, could you please let me know if Sigh.js supports those features?\r\n\r\nI think I've read it already supports those:\r\n\r\n- languages: ECO templates, SASS, CoffeeScript, ES6 transpiler (Babel);\r\n- support for source maps and uglifier (or any other minifier);\r\n- support for a watch mode;\r\n\r\nThose I'm not sure about the current status:\r\n\r\n- dependencies management supporting AMD and Common JS styles so that it would be compatible out of the box with most libraries;\r\n- ability to transform other browser libraries into an AMD or Common JS module without having to change the original sources (so that I could use the vanilla npm packages or submodules);\r\n- allow generated resources to have a checksum hash for permanent caching purposes;\r\n- allow images to be either embedded or externally referenced (with hashes in those cases) depending on some criteria like regexp or size and format;\r\n- supports for IE8/IE9 (won't generate several style tags as they only support up to 31 stylesheets);\r\n- supports the concept of initial and extra chunks, optimized for quickly initial loading;\r\n\r\nLet me better explain the last item. I want to serve an initial \"loading...\" page as soon as possible. To do that, I want to be able to serve the smallest CSS file in the header which is just enough to render the initial loading page layout properly while the additional resources (JS) are loading. The CSS link tag will block the initial page rendering but it should be pretty small and would hardly change so it would be already cached in most cases.\r\n\r\nBut I don't want the JS resources to block this initial rendering process so I want to be able to load them from the header (so that they would start downloading as soon as possible) with the async (and defer) attributes so that they don't block the initial rendered page. Also, it should be possible to ensure the vendors chunk will be evaluated before the app code even if the app chunk is likely to be smaller and finish downloading before the vendors chunk.\r\n\r\nAlso, I want to have a vendors chunk with libraries which barely change so that they would be cached for a longer time. The other chunk would only contain the required code for the initial page full load. Then, as the user interacts with it, the missing code would be downloaded and evaled (everything minified and with source maps support) as needed. This is achieved in webpack using the async syntax for AMD or Common JS pattern:\r\n\r\n```javascript\r\nrequire(['extra-code.js', 'extra-style.css'], function(c, s) {\r\n  ...\r\n});\r\n```\r\n\r\nWebpack supports lazy loading and commons chunks and even grouping lazily loaded chunks to reduce the amount of requests as well as embedding CSS into the served JS (although it's possible to use extract the CSS rules for the initial chunk into a separate stylesheet), which is what I'm looking for.\r\n\r\nI've been doing some experiences with webpack here in case it's not much clear what I'm looking for:\r\n\r\nhttps://github.com/rosenfeld/webpack-sample-project\r\n\r\nBut if Sigh.js can provide most of this while still supporting incremental build, then I'd take some time to learn how to achieve the same with Sigh.js.\r\n\r\nAdditionally, it would be awesome if it was possible to set up some dynamic rules for the watch mode so that it creates new chunks as new test files are created after the watch mode was started. I like to run each test file in a separate iframe, loading only their dependencies to make sure all dependencies are explicitly required. I couldn't get this working on webpack yet, so it would be a plus if sigh.js would also support something like that. :)\r\n\r\nCould you please confirm what Sigh currently supports and what it doesn't?\r\n\r\nThanks!"},"comment":{"url":"https://api.github.com/repos/sighjs/sigh/issues/comments/174609785","html_url":"https://github.com/sighjs/sigh/issues/18#issuecomment-174609785","issue_url":"https://api.github.com/repos/sighjs/sigh/issues/18","id":174609785,"user":{"login":"ohjames","id":97685,"avatar_url":"https://avatars.githubusercontent.com/u/97685?v=3","gravatar_id":"","url":"https://api.github.com/users/ohjames","html_url":"https://github.com/ohjames","followers_url":"https://api.github.com/users/ohjames/followers","following_url":"https://api.github.com/users/ohjames/following{/other_user}","gists_url":"https://api.github.com/users/ohjames/gists{/gist_id}","starred_url":"https://api.github.com/users/ohjames/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ohjames/subscriptions","organizations_url":"https://api.github.com/users/ohjames/orgs","repos_url":"https://api.github.com/users/ohjames/repos","events_url":"https://api.github.com/users/ohjames/events{/privacy}","received_events_url":"https://api.github.com/users/ohjames/received_events","type":"User","site_admin":false},"created_at":"2016-01-25T18:21:46Z","updated_at":"2016-01-25T18:21:46Z","body":"Shared modules belong in repositories, systemjs+jspm have ways of managing fetching/bundling of these also, I don't think the problem you're explaining exists."}}