{"id":23270191,"url":"https://github.com/essomia/gulpflow-starter","last_synced_at":"2025-08-03T19:12:31.085Z","repository":{"id":38332495,"uuid":"142227616","full_name":"Essomia/gulpflow-starter","owner":"Essomia","description":"Boilerplate to start a Gulp 4 front-end project with scss, babel, linter and images optimisation.","archived":false,"fork":false,"pushed_at":"2025-02-10T23:36:28.000Z","size":2116,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-11T00:28:20.769Z","etag":null,"topics":["babel","boilerplate","compiler","front-end","gulp","linter","sass","scss","starter","workflow"],"latest_commit_sha":null,"homepage":"","language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Essomia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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-07-25T00:45:03.000Z","updated_at":"2025-02-10T23:36:26.000Z","dependencies_parsed_at":"2024-01-07T20:59:36.397Z","dependency_job_id":"5b14f483-5be1-4f29-9fd1-0edda62495b9","html_url":"https://github.com/Essomia/gulpflow-starter","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Essomia%2Fgulpflow-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Essomia%2Fgulpflow-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Essomia%2Fgulpflow-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Essomia%2Fgulpflow-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Essomia","download_url":"https://codeload.github.com/Essomia/gulpflow-starter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238495731,"owners_count":19481914,"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":["babel","boilerplate","compiler","front-end","gulp","linter","sass","scss","starter","workflow"],"created_at":"2024-12-19T18:48:26.135Z","updated_at":"2025-02-12T15:18:48.570Z","avatar_url":"https://github.com/Essomia.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gulpflow Starter\n\nGulpflow Starter is a basic boilerplate to start a gulp front-end project with scss, babel, linter and images optimisation.\n\n## Dependencies\n\nMake sure the following are installed first:\n\n- Node.Js\n- Gulp Command Line Utility\n\n## Installation\n\nAdd this repository as one of your project dependencies.\n\n```\nnpm install git://github.com/essomia/gulpflow-starter.git\n```\n\nSet your project to use the boilerplate within the `gulpfile.js` file.\n\n```js\nconst boilerplate = require('@essomia/gulpflow-starter')();\n```\n\nNow, you can run `gulp build` to build project from sources folder to destinations folder **with the default configuration**.\n\n## Configuration\n\nAll default configuration are written in `./gulpflow/index.js`: conditional compilation, source paths and tasks list.\n\nIf you need to configure your own workflow, adjust your `gulpfile.js` file and pass your custom configuration to the boilerplate.\n\nBelow you have an example of custom configuration:\n\n```js\nconst customConfig = {\n    /**\n     * Main path for sources and destinations folder.\n     */\n    root: {\n        src: './src/',\n        dest: './build/'\n    },\n\n    /**\n     * Conditional configuration for project.\n     */\n    ifs: {\n        doLinter: true,\n        doMinify: true,\n        doSourcemaps: false\n    },\n\n    /**\n     * Main linters files.\n     */\n    linters: {\n        eslint: `./.eslintrc.yaml`,\n        stylelint: `./.stylelintrc.yaml`\n    },\n\n    /**\n     * List sources folders for specific task.\n     *\n     * @note Following format {key}:{value}\n     *   @var {key}   - Task name from `./gulpflow/tasks/` folder.\n     *   @var {value} - Array|String of all path to look for files.\n     */\n    sources: {\n        css: 'components/**/assets/raw/**/*.css',\n        fonts: 'components/**/assets/fonts/**/*.{eot,svg,ttf,woff,woff2}',\n        html: 'components/**/assets/raw/**/*.html',\n        images: 'components/**/assets/images/**/*.{jpg,jpeg,png,gif,svg}',\n        js: 'components/**/js/**/*.js',\n        json: 'components/**/assets/raw/**/*.json',\n        scss: 'components/**/scss/**/*.{sass,scss}'\n    },\n\n    /**\n     * List destinations folders for specific task.\n     *\n     * @note Following format {key}:{value}\n     *   @var {key}   - Task name from `./gulpflow/tasks/` folder.\n     *   @var {value} - Array|String of all path to look for files.\n     */\n    destinations: {\n        css: 'css/',\n        fonts: 'fonts/',\n        html: 'templates/',\n        images: 'images/',\n        js: 'scripts/',\n        json: 'json/',\n        scss: 'styles/'\n    },\n\n    /**\n     * Main tasks to run.\n     *\n     * @note Following format {key}:{value}\n     *   @var {key}   - Task name from `./gulpflow/core/` folder.\n     *   @var {value} - Array of all tasks from `./gulpflow/tasks/` folder to run.\n     */\n    tasks: {\n        watch: ['js', 'scss'],\n        build: ['html', 'css', 'json', 'fonts', 'images', 'js', 'scss']\n    }\n};\n\nconst boilerplate = require('@essomia/gulpflow-starter')(customConfig);\n```\n\n## Tasks\n\nThis is the full list of tasks available, that you can use in a project.\n\nAll available tasks are placed in the folder `./gulpflow/` as separate `*.js` files and since we use the CommonJS modules format, usually, a filename equal a task name.\n\n### Core tasks\n\n| Task name | Description                                                         |\n| :-------- | :------------------------------------------------------------------ |\n| `build`   | Compile entire project (assets + styles + scripts) to destinations. |\n| `clean`   | Remove destinations files of the project.                           |\n| `watch`   | Watch sources files of project for modifications.                   |\n\n### Files tasks\n\n| Task name | Description                                                                                    |\n| :-------- | :--------------------------------------------------------------------------------------------- |\n| `css`     | Optimize `.css` with autoprefixer \u0026 cssnano.                                                   |\n| `fonts`   | Copy `.eot/.svg/.ttf/.woff/.woff2`                                                             |\n| `html`    | Optimize `.html` with htmlmin.                                                                 |\n| `images`  | Optimize `.jpg/.jpeg/.png/.gif/.svg` with imagemin.                                            |\n| `js`      | Optimize `.js` with uglify and include + Lint files with babel and eslint.                     |\n| `json`    | Optimize `.json` with jsonminify.                                                              |\n| `scss`    | Compile `.sass/.scss` to `.css` with sass, autoprefixer \u0026 cssnano + Lint files with stylelint. |\n\n## Folders structure\n\nThe default supported sources folders structures is:\n\n```\n/example/src\n    /components\n        /\u003ccomponent_name\u003e\n        /assets\n            /fonts\n            /images\n            /raw\n        /js\n        /scss\n```\n\nAnd that will be compiled to destinations:\n\n```\n/example/app\n    /css/\u003ccomponent_name\u003e\n    /fonts/\u003ccomponent_name\u003e\n    /images/\u003ccomponent_name\u003e\n    /json/\u003ccomponent_name\u003e\n    /scripts/\u003ccomponent_name\u003e\n    /styles/\u003ccomponent_name\u003e\n    /templates/\u003ccomponent_name\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fessomia%2Fgulpflow-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fessomia%2Fgulpflow-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fessomia%2Fgulpflow-starter/lists"}