{"id":20027085,"url":"https://github.com/unic/estatico-nou","last_synced_at":"2025-03-02T04:41:37.904Z","repository":{"id":29930751,"uuid":"118827507","full_name":"unic/estatico-nou","owner":"unic","description":"Static site generator for frontend engineers","archived":false,"fork":false,"pushed_at":"2023-07-12T13:56:17.000Z","size":7237,"stargazers_count":13,"open_issues_count":35,"forks_count":6,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-02-16T16:58:20.466Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://unic.com","language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-24T21:59:09.000Z","updated_at":"2023-11-16T10:28:35.000Z","dependencies_parsed_at":"2023-02-13T20:01:27.675Z","dependency_job_id":null,"html_url":"https://github.com/unic/estatico-nou","commit_stats":{"total_commits":374,"total_committers":10,"mean_commits":37.4,"dds":"0.15775401069518713","last_synced_commit":"6256722583aa5f236b9742e65dc99e4e2e792e64"},"previous_names":[],"tags_count":210,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Festatico-nou","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Festatico-nou/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Festatico-nou/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unic%2Festatico-nou/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unic","download_url":"https://codeload.github.com/unic/estatico-nou/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240304569,"owners_count":19780312,"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-11-13T09:08:59.511Z","updated_at":"2025-03-02T04:41:37.883Z","avatar_url":"https://github.com/unic.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)\n\n# Estático Nou\n\nRefactored https://github.com/unic/estatico with separate packages for every task. Mono-repo based on [Lerna](https://github.com/lerna/lerna).\n\n## What is this?\n\nEstático is basically a set of (mostly) [`gulp.js`](https://gulpjs.com/) tasks to build a static frontend. At [Unic](https://www.unic.com/) we use it to develop frontend prototypes / pattern libraries.\n\nThe goal is to provide a thin wrapper on top of de-facto-standards like [`webpack`](https://webpack.js.org/), [`Babel`](https://babeljs.io/), [`Sass`](https://sass-lang.com/), [`ESLint`](https://eslint.org/) or [`stylelint`](https://stylelint.io/), to name the most important ones. \n\nAs you can see in our [boilerplate](packages/estatico-boilerplate), we rely on the default configuration files for aforementioned tools, which should make your code very portable. Specifically, you could decide on using `webpack` without our wrapper task and would still get the same result. However, using the tasks will give you the following advantages:\n- Sensible and battle-tested defaults for tools like `webpack` and `Sass`.\n- \"Smart\" file watching based on a dependency graph of your code. This makes sure that editing a Sass or Handlebars partial will only rebuild the necessary files.\n- Extended logging, making use of gulp's [`loglevel`](https://github.com/gulpjs/gulp-cli) flag. So running a task with `-LLLL` will give you more detailed infos than with `-L`.\n- Config validation using [`joi`](https://www.npmjs.com/package/joi), trying to make sure that you know *why* a task might be failing instead of just throwing an exception.\n\n## When could I use this?\n\nIt very much depends on what you are creating. We often build rather static frontend prototypes containing only small application parts. There, a setup based on Gulp task has proven to be very helpful and flexible.\n\nIf the asset pipeline part isn't that important, a static site generator like [`11ty`](https://github.com/11ty/eleventy) might be a better fit. It is also possible to combine Estático with tools like [`Fractal`](https://fractal.build/), which would take care of the  templating and component previewing part.\n\nFor a JavaScript application we would rather recommend using the corresponding tools like [`Vue CLI`](https://cli.vuejs.org/), [`Create React App`](https://github.com/facebook/create-react-app) or [`Angular CLI`](https://cli.angular.io/). \n\n## How can I use it?\n\nThe tasks and helpers are npm packages published in our [`@unic` scope](https://www.npmjs.com/org/unic). The READMEs explaining how to install and use them are both available on npmjs.com and in the corresponding directories of this repo (see links above).\n\nThe [estatico-boilerplate](packages/estatico-boilerplate) package is meant as a demo project / boilerplate. Therefore it is *not* available on npm but rather needs to be cloned locally (see [instructions](packages/estatico-boilerplate) on how to do this).\n\n## What does it contain?\n\n- [estatico-boilerplate](packages/estatico-boilerplate) (see notes above)\n\n### Tasks\n\n- [estatico-browsersync](packages/estatico-browsersync)\n- [estatico-copy](packages/estatico-copy)\n- [estatico-eslint](packages/estatico-eslint)\n- [estatico-font-datauri](packages/estatico-font-datauri)\n- [estatico-handlebars](packages/estatico-handlebars)\n- [estatico-imageversions](packages/estatico-imageversions)\n- [estatico-json-mocks](packages/estatico-json-mocks)\n- [estatico-json-schema](packages/estatico-json-schema)\n- [estatico-puppeteer](packages/estatico-puppeteer)\n- [estatico-sass](packages/estatico-sass)\n- [estatico-scaffold](packages/estatico-scaffold)\n- [estatico-stylelint](packages/estatico-stylelint)\n- [estatico-svgsprite](packages/estatico-svgsprite)\n- [estatico-w3c-validator](packages/estatico-w3c-validator)\n- [estatico-watch](packages/estatico-watch)\n- [estatico-webpack](packages/estatico-webpack)\n\n### Helpers\n\n- [estatico-data](packages/estatico-data)\n- [estatico-jest](packages/estatico-jest)\n- [estatico-qunit](packages/estatico-qunit) [deprecated]\n- [estatico-utils](packages/estatico-utils)\n\n## How can I contribute?\n\n- Clone this repository\n- Install yarn if you don't already have it: `npm i -g yarn`\n- Bootstrap (installing dependencies and linking them): `yarn bootstrap`,\n- To remove `node_modules` from each package: `yarn clean`\n\nIf bootstrapping fails, reducing the concurrency might help: `lerna bootstrap --concurrency=1`\n\nEvery package in `packages/` can be developed separately.\n\n### Manage npm dependencies\n\nSince lerna does magic things with packages (symlinking local ones etc.), we need to use `lerna add` to add new dependencies to a package. Examples: `lerna add node-sass --scope=@unic/estatico-sass` or `lerna add left-pad --dev --scope=@unic/estatico-boilerplate`.\n\nTo remove dependencies, delete them from the corresponding `package.json`.\n\nRun `lerna bootstrap` after any change (either adding or removing).\n\n### Boilerplate\n\nAs described above, the `estatico-boilerplate` package is meant as a demo project. I has the main packages specified as dependencies and Lerna takes care of linking them locally. So a change to `estatico-stylelint` will immediately be available in `estatico-boilerplate`. This is very useful when working on task packages since the corresponding changes can immediately be tested in the boilerplate.\n\n### Tests\n\nTo run all tests in every package we can call `lerna exec -- npm test`. For a specific one we can use `lerna exec --scope=@unic/estatico-stylelint -- npm test` (or `npm run lerna-test` after navigating into a package).\n\n### Release\n\n`npm release` will run [`lerna publish --conventional-commits`](https://github.com/lerna/lerna/tree/master/commands/publish#readme) and generate a CHANGELOG via [`Conventional Changelog`](https://github.com/conventional-changelog/conventional-changelog). For this changelog to be properly created, the correct [commit message format](https://www.conventionalcommits.org) needs to be used.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funic%2Festatico-nou","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funic%2Festatico-nou","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funic%2Festatico-nou/lists"}