{"action":"created","issue":{"url":"https://api.github.com/repos/mozilla/testpilot/issues/1463","repository_url":"https://api.github.com/repos/mozilla/testpilot","labels_url":"https://api.github.com/repos/mozilla/testpilot/issues/1463/labels{/name}","comments_url":"https://api.github.com/repos/mozilla/testpilot/issues/1463/comments","events_url":"https://api.github.com/repos/mozilla/testpilot/issues/1463/events","html_url":"https://github.com/mozilla/testpilot/issues/1463","id":179791847,"number":1463,"title":"Investigate Webpack","user":{"login":"chuckharmston","id":23885,"avatar_url":"https://avatars.githubusercontent.com/u/23885?v=3","gravatar_id":"","url":"https://api.github.com/users/chuckharmston","html_url":"https://github.com/chuckharmston","followers_url":"https://api.github.com/users/chuckharmston/followers","following_url":"https://api.github.com/users/chuckharmston/following{/other_user}","gists_url":"https://api.github.com/users/chuckharmston/gists{/gist_id}","starred_url":"https://api.github.com/users/chuckharmston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chuckharmston/subscriptions","organizations_url":"https://api.github.com/users/chuckharmston/orgs","repos_url":"https://api.github.com/users/chuckharmston/repos","events_url":"https://api.github.com/users/chuckharmston/events{/privacy}","received_events_url":"https://api.github.com/users/chuckharmston/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mozilla/testpilot/labels/needs%20discussion","name":"needs discussion","color":"bfe5bf"},{"url":"https://api.github.com/repos/mozilla/testpilot/labels/status:%20planned","name":"status: planned","color":"e6e6e6"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-09-28T14:37:31Z","updated_at":"2016-10-11T18:02:27Z","closed_at":null,"body":"Our gulp build process is a bit gnarly and DIY, and some things (i.e. #1376, #1349) are much more challenging to do than it would be when using Webpack. Let's put together a list of requirements for our build system in a post-Django world, and do some informed compare/contrasting.\r\n\r\n\r\n## Requirements\r\n\r\n- Should be entirely contained within the `frontend` directory, as `addon` is.\r\n- Development server\r\n    - Should watch for changes and selectively recompile.\r\n    - With hot reloading for React components.\r\n    - With React and Redux dev tools.\r\n- Assets\r\n    - Should copy locale files, addon XPI and addon RDF to the appropriate locations.\r\n    - Should convert content yaml to JSON and copy to the appropriate location.\r\n    - Should convert legal md to HTML and copy to the appropriate location.\r\n    - Should bundle CSS modules + SCSS.\r\n    - Should bundle Javascript.\r\n        - [Tree-shaking?](https://blog.engineyard.com/2016/tree-shaking)\r\n    - Vendor modules: babel-polyfill, l20n\r\n    - Should build source maps for JS and CSS\r\n    - Should selectively include Pontoon.\r\n    - Should ship with a base configuration and per-environment overrides using `NODE_ENV`\r\n- Linting\r\n    - SCSS and JavaScript\r\n    - Should fail builds on linting errors, notify of warnings.\r\n\r\n\r\n## Future\r\n\r\n- Isomorphic; include experiments JSON blob in `index.html`, prevent need for API call.\r\n\r\n\r\n## Proposed file structure\r\n\r\n- addon\r\n- frontend\r\n    - bin\r\n        - server.js\r\n    - build\r\n        - webpack.config.js\r\n    - config\r\n        - <env>.js\r\n        - index.js\r\n    - dist\r\n        - static\r\n            - (mirrors src)\r\n        - app.css\r\n        - app.js\r\n        - index.html\r\n        - vendor.js\r\n    - server\r\n    - src\r\n        - actions\r\n        - components\r\n        - containers\r\n        - lib\r\n        - reducers\r\n        - selectors\r\n        - static\r\n            - addon\r\n                - addon.xpi\r\n            - images\r\n            - locales\r\n        - app.js\r\n        - index.html\r\n        - routes.js\r\n    - test\r\n        - (mirrors src)"},"comment":{"url":"https://api.github.com/repos/mozilla/testpilot/issues/comments/252995738","html_url":"https://github.com/mozilla/testpilot/issues/1463#issuecomment-252995738","issue_url":"https://api.github.com/repos/mozilla/testpilot/issues/1463","id":252995738,"user":{"login":"chuckharmston","id":23885,"avatar_url":"https://avatars.githubusercontent.com/u/23885?v=3","gravatar_id":"","url":"https://api.github.com/users/chuckharmston","html_url":"https://github.com/chuckharmston","followers_url":"https://api.github.com/users/chuckharmston/followers","following_url":"https://api.github.com/users/chuckharmston/following{/other_user}","gists_url":"https://api.github.com/users/chuckharmston/gists{/gist_id}","starred_url":"https://api.github.com/users/chuckharmston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chuckharmston/subscriptions","organizations_url":"https://api.github.com/users/chuckharmston/orgs","repos_url":"https://api.github.com/users/chuckharmston/repos","events_url":"https://api.github.com/users/chuckharmston/events{/privacy}","received_events_url":"https://api.github.com/users/chuckharmston/received_events","type":"User","site_admin":false},"created_at":"2016-10-11T18:02:27Z","updated_at":"2016-10-11T18:02:27Z","body":"This is bitrotting pretty hard, would appreciate some eyes."}}
{"actor":{"display_login":"chuckharmston"}}