[{"data":1,"prerenderedAt":458},["ShallowReactive",2],{"project-40210627":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":45,"what":46,"said":85,"maker_in_thread":182,"shape":195,"grid":199,"attempts":419,"same_week":420,"maker_shows":33,"maker_hidden":450,"reader_version":451,"card":452},"40210627","Extension.js","A CLI tool to create web extensions with no build configuration","title","Show HN: I made a CLI tool to create web extensions with no build configuration","https:\u002F\u002Fgithub.com\u002Fcezaraugusto\u002Fextension.js","github.com","cezaraugustodev",1714482676,2024,381,87,126,3515,4,"legend","dev_tools","browser extension tooling","cli",[24,25,26,22,27],"browser extension","web extension","chrome extension","build tool","mixed",0.137,{"positive":31,"neutral":32,"mixed":33,"critical":34},10,13,1,6,30,{"execution":37,"idea":39,"docs":40,"design":41},{"positive":38,"critical":33},0,{"positive":33,"critical":38},{"positive":33,"critical":38},{"positive":38,"critical":33},[43,44,43,43,43,44,44,38,43,38,38,44,38,43,43,44,43,44,33,38,38,44,44,33,33,44,33,43,38,43,38,38,38,38,33,33,43,38,38,38],3,5,"Hello HN! I'm the creator and solo developer of Extension.js, a development tool for browser extensions with built-in support for TypeScript, WebAssembly, React, and modern JavaScript. Developers use it to spend less time configuring the compilation config or learning new frameworks and more time actually writing code.\n\nMost projects similar to Extension.js rely on some sort of abstraction or configuration to get started, making the initial development process slow given the extra learning curve and setup guidelines. By using Extension.js, adding the package to your npm scripts is all it takes",{"problem":47,"audience":56,"pricing":60,"motivation":61,"time_to_build":60,"stack":65,"openness":82,"stage":83,"team_size":84},{"value":48,"source":49,"evidence":50},"Browser extension development requires manual reloads, bundler configuration and multi-browser setup","maker",[51,54],{"id":52,"by":11,"text":53},"40222356","In your case, Extension.js can help by managing the configuration details that are usually overlooked in general web development. After copying a few files from the Chrome…",{"id":55},"post",{"value":57,"source":49,"evidence":58},"Developers building browser extensions",[59],{"id":55},null,{"value":62,"source":49,"evidence":63},"Started as a way to teach others browser extension development and reduce project setup time",[64],{"id":55},[66,70,74,78],{"value":67,"source":49,"evidence":68},"JavaScript",[69],{"id":55},{"value":71,"source":49,"evidence":72},"TypeScript",[73],{"id":55},{"value":75,"source":49,"evidence":76},"React",[77],{"id":55},{"value":79,"source":49,"evidence":80},"WebAssembly",[81],{"id":55},"open_source","beta","solo",{"praise":86,"objections":103,"requests":130,"questions":150,"alternatives":162},[87],{"value":88,"source":89,"evidence":90},"Saves setup time and removes build configuration","commenter",[91,95,99],{"id":92,"by":93,"text":94},"40213866","simple10","This is exactly what I need right now. Thanks for building and sharing it! Looking forward to Firefox support. I hope you can get it working. Firefox Support Issue:…",{"id":96,"by":97,"text":98},"40211349","mvkel","This is extremely cool. Even the readme is beautiful! I'm going to give this a try. I've been holding off on adding an extension to my app because of the absolute cluster that is…",{"id":100,"by":101,"text":102},"40218064","gerroo","Absolutely amazing! When I was developing a chrome extension all I could think of was a severe lack of dev-tools. I'll try it when I get the opportunity.",[104,119],{"value":105,"source":89,"evidence":106},"No Firefox support yet",[107,111,115],{"id":108,"by":109,"text":110},"40211757","mrozbarry","I totally understand why, but no firefox support is a show-stopper for most extension developers.",{"id":112,"by":113,"text":114},"40211234","herrherrmann","Very cool stuff! I might check this out for my extension (https:\u002F\u002Fgithub.com\u002Fherrherrmann\u002Fomnivore-list-popup). So far, I’ve been creating my own scripts to manage the extension…",{"id":116,"by":117,"text":118},"40212249","notum","Apologies for the confusion but what is \"cross-browser\" about this tool if it only works with chromium?",{"value":120,"source":89,"evidence":121},"Safari not supported",[122,126],{"id":123,"by":124,"text":125},"40211232","isodev","Looks interesting but I don’t understand why Safari is excluded on both desktop and mobile.",{"id":127,"by":128,"text":129},"40218478","msephton","Just added an issue: Safari support should be relatively straightforward using Apple's safari-web-extension-converter cli tool.",[131,139,143],{"value":132,"source":89,"evidence":133},"Add Firefox support",[134,135],{"id":92,"by":93,"text":94},{"id":136,"by":137,"text":138},"40211820","ViktorBash","Looks good! I'll give this a swing on my own extension Vim for Docs. Firefox not being supported is a bummer, but it's not like there is a build tool for extensions that does…",{"value":140,"source":89,"evidence":141},"Add Safari support",[142],{"id":127,"by":128,"text":129},{"value":144,"source":89,"evidence":145},"Remove emojis from CLI output",[146],{"id":147,"by":148,"text":149},"40212328","avtar","Minor feedback: please consider an option to exclude emojis from the cli output. I can appreciate wanting to add some character here and there, but the output of ``npx extension…",[151],{"value":152,"source":89,"evidence":153},"How does it differ from Plasmo or web-ext",[154,158],{"id":155,"by":156,"text":157},"40213340","outlore","this is cool! how would you contrast this with Plasmo, a similar framework? https:\u002F\u002Fwww.plasmo.com\u002F",{"id":159,"by":160,"text":161},"40212667","chadrs","I’ve been pretty happy with web-ext, I’m curious what abstractions and configurations Extensions.js avoids comparatively. I’m assuming you’ll still need a manifest.json, and it…",[163,171,175],{"value":164,"source":89,"evidence":165},"Plasmo",[166,167],{"id":155,"by":156,"text":157},{"id":168,"by":169,"text":170},"40212722","_andrei_","very cool, also check out https:\u002F\u002Fwww.plasmo.com\u002F",{"value":172,"source":89,"evidence":173},"web-ext",[174],{"id":159,"by":160,"text":161},{"value":176,"source":89,"evidence":177},"CRXJS",[178],{"id":179,"by":180,"text":181},"40218975","hhimanshu","This is good project. I built my first chrome extension using https:\u002F\u002Fcrxjs.dev\u002Fvite-plugin\u002Fgetting-started and there was lot of fiddling to et styles working. This could also be…",{"comments":183,"answered":184,"key":185},24,7,[186,189,192],{"id":187,"text":188},"40211328","Thanks a lot! You can run your Mozilla Add-On on Chrome or Edge by adding a --polyfill flag, but for now you need to manually add the extension to Firefox. I do plan to support…",{"id":190,"text":191},"40214372","The plugin for Firefox is on the way, but any community support is highly appreciated.",{"id":193,"text":194},"40221980","That's interesting, what do you mean? An abstraction for the manifest apply dev defaults or instructions on how each major part should work?",{"commenters":196,"max_depth":34,"maker_replies":183,"first_comment_mins":197,"lifespan_hours":198},46,71,120,[200,202,204,206,208,209,213,214,218,221,226,227,228,231,233,236,238,240,241,244,247,250,252,255,259,261,264,266,269,271,273,275,278,280,281,283,285,289,291,295,297,301,304,306,308,310,312,316,318,320,324,326,328,331,333,335,337,340,342,346,349,352,354,357,360,362,364,368,371,374,377,379,381,384,386,389,392,395,397,400,402,405,408,411,413,415,417],[112,38,43,201,113,38],"project\u002Fneutral\u002Fnone",[187,38,38,203,11,33],"maker\u002Fneutral\u002Fnone",[92,33,44,205,93,38],"project\u002Fpositive\u002Fnone",[207,33,43,203,93,38],"40213893",[190,33,38,203,11,33],[210,33,43,211,212,38],"40214034","project\u002Fneutral\u002Fexecution","Vinnl",[193,33,38,203,11,33],[215,33,43,216,217,38],"40224653","maker\u002Fneutral\u002Fexecution","dotproto",[219,33,38,220,212,38],"40246491","commenter\u002Fneutral\u002Fnone",[222,223,43,224,225,38],"40222013",2,"project\u002Fneutral\u002Fidea","satisfice",[52,223,38,224,11,33],[179,43,44,205,180,38],[229,43,38,230,11,33],"40221986","maker\u002Fpositive\u002Fnone",[96,18,44,232,97,38],"project\u002Fpositive\u002Fdocs",[234,18,38,235,11,33],"40211457","maker\u002Fpositive\u002Fdocs",[237,18,38,220,217,38],"40224996",[239,18,38,220,97,38],"40232271",[155,44,43,224,156,38],[242,44,38,243,93,38],"40213831","other\u002Fneutral\u002Fnone",[245,44,38,243,246,38],"40214468","spxneo",[248,44,38,243,249,38],"40221171","bluelightning2k",[251,44,38,224,11,33],"40214742",[253,44,38,243,254,38],"40218558","selalipop",[256,34,44,257,258,38],"40215398","project\u002Fpositive\u002Fidea","from-nibly",[260,34,38,230,11,33],"40215643",[262,184,43,224,263,38],"40216931","aaronharding",[265,184,38,203,11,33],"40218255",[267,184,38,243,268,38],"40220340","nullandvoid",[270,184,38,220,217,38],"40225013",[127,272,43,211,128,38],8,[274,272,38,230,11,33],"40221996",[136,276,43,277,137,38],9,"project\u002Fmixed\u002Fnone",[279,276,38,203,11,33],"40213158",[100,31,44,205,101,38],[282,31,38,203,11,33],"40218271",[284,31,43,203,217,38],"40225076",[286,287,44,205,288,38],"40215038",11,"lagniappe",[290,287,38,230,11,33],"40215661",[292,293,44,205,294,38],"40211348",12,"blackhaj7",[296,293,38,230,11,33],"40211419",[298,32,33,299,300,38],"40221187","project\u002Fcritical\u002Fnone","kosolam",[302,32,38,220,303,38],"40224865","sureIy",[305,32,38,220,300,38],"40234039",[307,32,38,220,303,38],"40258639",[309,32,38,220,300,38],"40263639",[311,32,38,220,303,38],"40264786",[313,314,44,205,315,38],"40212415",14,"rmdes",[317,314,38,230,11,33],"40212671",[168,319,44,205,169,38],15,[321,322,38,243,323,38],"40222310",16,"cantSpellSober",[108,325,33,299,109,38],17,[327,325,38,203,11,33],"40211803",[329,325,43,201,330,38],"40212514","thenbe",[116,332,33,299,117,38],18,[334,332,38,203,11,33],"40212651",[336,332,44,205,117,38],"40213399",[338,332,33,299,339,38],"40215367","purple-leafy",[341,332,38,203,11,33],"40222373",[343,344,43,224,345,38],"40211339",19,"edwinjm",[347,344,38,243,348,38],"40211548","thrdbndndn",[350,344,38,220,351,38],"40211677","jonathanlydall",[353,344,38,203,11,33],"40211780",[355,344,38,220,356,38],"40212166","PurpleRamen",[358,344,38,243,359,38],"40212271","derefr",[159,361,43,224,160,38],20,[363,361,38,216,11,33],"40214505",[365,366,38,243,367,38],"40213741",21,"masto",[369,366,38,243,370,38],"40213830","grimgrin",[372,366,38,243,373,38],"40213954","rsoto",[375,366,38,243,376,38],"40217095","sfink",[378,366,38,220,370,38],"40217984",[380,366,38,211,11,33],"40214785",[382,366,38,243,383,38],"40215507","insin",[385,366,38,243,376,38],"40217211",[147,387,33,388,148,38],22,"project\u002Fcritical\u002Fdesign",[390,387,38,391,11,33],"40212510","maker\u002Fpositive\u002Fdesign",[123,393,33,394,124,38],23,"project\u002Fcritical\u002Fexecution",[396,393,38,216,11,33],"40211361",[398,393,43,211,399,38],"40213952","bpev",[401,393,38,216,11,33],"40222200",[403,183,38,243,404,38],"40219701","rantymcrant",[406,183,38,243,407,38],"40219793","saghm",[409,183,38,243,410,38],"40220028","fragmede",[412,183,38,243,404,38],"40223789",[414,183,38,243,410,38],"40229282",[416,183,38,243,404,38],"40232938",[418,183,38,243,410,38],"40264191",[],[421,426,431,435,440,445],{"id":422,"name":423,"points":424,"category":425},"40159278","NAND",420,"learning_science",{"id":427,"name":428,"points":429,"category":430},"40213562","where to stream",335,"consumer_social",{"id":432,"name":433,"points":434,"category":20},"40191510","Dotenv",225,{"id":436,"name":437,"points":438,"category":439},"40222051","Factful",222,"ai",{"id":441,"name":442,"points":443,"category":444},"40173237","Lanki",206,"productivity",{"id":446,"name":447,"points":448,"category":449},"40175087","tscircuit",197,"hardware",false,"v2",{"id":453,"name":5,"line":6,"ai":450,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":454,"top":18,"kw":455,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":456,"url":9,"mix":457,"praise":88,"objection":105,"sub":21},40210627,0.14,[24,25,26,22,27],"3533355030050335351005511513030000113000",[31,32,33,34],1794036653978]