{"id":13754568,"url":"https://github.com/btholt/sfo","last_synced_at":"2025-05-10T00:31:02.448Z","repository":{"id":40003083,"uuid":"105409087","full_name":"btholt/sfo","owner":"btholt","description":"DEPRECATED: Instant build process","archived":false,"fork":false,"pushed_at":"2018-04-26T01:25:43.000Z","size":177,"stargazers_count":228,"open_issues_count":16,"forks_count":24,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T02:35:15.731Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btholt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-01T00:14:01.000Z","updated_at":"2024-05-20T11:10:03.000Z","dependencies_parsed_at":"2022-06-26T06:00:56.979Z","dependency_job_id":null,"html_url":"https://github.com/btholt/sfo","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btholt%2Fsfo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btholt%2Fsfo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btholt%2Fsfo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btholt%2Fsfo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btholt","download_url":"https://codeload.github.com/btholt/sfo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253346363,"owners_count":21894263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T10:00:29.192Z","updated_at":"2025-05-10T00:31:02.119Z","avatar_url":"https://github.com/btholt.png","language":"JavaScript","funding_links":[],"categories":["zero config bundlers"],"sub_categories":[],"readme":"# Deprecated\n\nThis library was a ton of fun to create and I think had a pretty good developer experience. However I don't have the time or the use case anymore to devote to curating an ongoing great experience around it. In light of that, I'd say [Parcel](http://parceljs.org/) achieves the same goals that sfo aspired to. Highly recommended!\n\n\u003ch1 align=\"center\"\u003esfo\u003c/h1\u003e \u003cbr\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"kick-ass-logo-eventually\" title=\"Placeholder\" src=\"https://drive.google.com/uc?id=1eNNthq-OAURyRVIdBj3D-Qh3ow5y7dWL\" width=\"150\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Your build process within a single command\n\u003c/p\u003e\n\n## Table of Contents\n\n* [Introduction](#introduction)\n* [How to use](#use)\n* [Commands](#commands)\n* [Future](#future)\n\n## Introduction\n\nA build process in a command. Just run:\n\n`npx sfo dev \u003cyour entry file\u003e`\n\nand SFO takes care of spinning up a build process and dev server for you!\n\nIf you don't want to use npx, run:\n\n`npm install --global sfo` then run\n\n`sfo dev \u003cyour entry file\u003e`.\n\nBut you say you use Angular/Ember/Vue/React etc...No problem. sfo with work with your framework of choice.\n\n## What am I getting?\n\n* Webpack\n* Babel\n  * preset-env\n  * Flow annotation removal\n  * JSX\n* Importable CSS which is run through PostCSS\n  * cssnano\n  * postcss-import\n  * cssnext\n* ESLint with rules for Flow, Airbnb, and Prettier\n* vue-loader with buble for Vue users (doesn't affect you if you don't use `.vue` files.)\n\n## Use\n\nIn your entry file, just export a default function that accepts a DOM node. It's then up to you to render whatever you want to the DOM!\n\n## React Example\n\n```es6\nimport React from 'react';\nimport { render } from 'react-dom';\nimport './my-styles.css';\n\nconst App = () =\u003e \u003ch1\u003eHello World!\u003c/h1\u003e;\n\nexport default function (node) {\n  render(\u003cApp /\u003e, node);\n}\n```\n\n## Commands\n\n* `sfo dev \u003centry file\u003e` - Runs the dev process with nice debugging features.\n* `sfo bundle \u003centry file\u003e` - Outputs a production build to the `./build` directory. You can take this and then deploy it easily.\n* `sfo size \u003centry file\u003e` - Get a nice visualization of your production bundle to see where you can cut down on file size.\n\n## Flags\n\n* `--no-eslint` - Run sfo without the Airbnb eslint rules\n\n## Shadowing\n\nSometimes you need a bit more customization than sfo initially allows. sfo has a \"shadowing\" feature that if it detects that you have your own configuration for one of the tools, it'll use your config instead of its own. Shadowing works for the following:\n\n* `./index.html` - sfo has its own index.html that it uses for your default page but it will use your index.html if it finds it. sfo will smartly inject the built CSS and JS so you don't have to worry about those. Its only requirement is that you have a `#root` element somewhere that it provide that element to the exported function.\n* `./.babelrc` - If you have a different config for Babel than what's provided then it will use that. For now, only `./.babelrc` works and other locations of Babel configs (like package.json) don't work.\n\nDue to how ESLint loads plugins, it cannot be shadowed. Use `--no-eslint` for now instead.\n\n## This isn't very configurable.\n\nFeature-not-a-bug.\n\n## Future\n\nLots to do here. This is just the start and we would love your feedback and help to make it happen. Look at the issues if you want to see my roadmap.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtholt%2Fsfo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtholt%2Fsfo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtholt%2Fsfo/lists"}