Giter Site home page Giter Site logo

gassetic's Introduction

Gassetic build status

Summary

Gassetic is an Assetic replacement which is based on the gulp build tool for more comfortable frontend development and dependency management

Advantages over assetic

  • Easy to setup
  • Use a package manager like Bower or Npm for JS dependencies
  • Use the gulp.js ecosystem to build your frontend assets
  • Use gulp-livereload for CSS hot reloading (see the CSS section in the example below)

How it works

Gassetic makes it easy to manage your frontend assets. You can install JS and CSS libs through a package manager like Bower and then compile them using tools from gulp.js

Gassetic replaces "<!-- {env}:{filename} --><!-- endbuild -->" strings in your templates with your generated CSS and JS files. In your gassetic.yml file you can specify which files and tasks to run on the input files and the names of the output files.

Gulp has literally hundreds of plugins that you can include in your gulpfile and process on your frontend assets.

Installation

  1. Create your gassetic config

yaml example with gassetic.yml

requires:
  less: gulp-less
  minify: gulp-minify-css
  concat: gulp-concat
  uglify: gulp-uglify
  livereload: gulp-livereload
mimetypes:
  # This section contains the formatters for the css files
  css:
    # In 'prod' mode, use these settings
    prod:
      outputFolder: web/compiled/css  # The output folder for your saving your compiled files
      webPath:      /compiled/css     # The web path for the compiled files
      # Run these tasks on your compiled files
      tasks:
        - { name: less }
        - { name: minify }
        - { name: concat, args: '%filename%' }
        - { name: livereload, args: { start: true } }
      htmlTag: '<link rel="stylesheet" type="text/css" href="{{ asset("%path%") }}">' # custom html tag

    # This is the list of source files to apply the above settings
    files:
      frontend.css: # This is the output filename
        - assets/css/animate.min.css
        - assets/css/swipebox.css
        - assets/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css
        - assets/vendor/bootstrap3-wysihtml5-bower/dist/bootstrap3-wysihtml5.css
        - assets/vendor/jquery-simplecolorpicker/jquery.simplecolorpicker.css
        - vendors/oh/emoji-bundle/Oh/EmojiBundle/vendor/emoji.css
      backend.css:
        - assets/vendor/bootstrap-daterangepicker/daterangepicker-bs3.css
        - assets/css/backend.css

    # Watch these files for changes (optional)
    watch:
      - assets/**/*.less
      - assets/**/*.css

  # This section contains the formatters for your JS files
  js:
    prod:
      outputFolder: web/compiled/js  # Save the files here
      webPath:      /compiled/js     # Specify the web path
      tasks:
        - { name: concat, args: '%filename%' }
        - { name: uglify, args: { mangle: false } }

    # Here is a list of files to apply the above tasks to
    files:
      jquery.js: # This is the output filename
        - assets/vendor/jquery/jquery.js
      app.js:
        - web/html5lightbox/html5lightbox.js
        - assets/vendor/angular/angular.js
        - assets/vendor/angular-route/angular-route.js
        - assets/vendor/angular-sanitize/angular-sanitize.js
        - assets/js/tmp/angularApp.js/**/*.js

# This is the list of files/paths to search and find the replacement tags to insert the
# generated <script> or stylesheet tags
replacementPaths:
  - web/*.html
  - includes/**/*.html

default:
  - js
  - css
  1. Within root of your project run:
  npm install gulp-less
  npm install gulp-minify-css
  npm install gulp-uglify
  npm install gulp-concat
  ... anything else that you need and have defined in the 'requires' section of the config
  1. Update your templates from
  <link rel="stylesheet" ...

To:

  <!-- prod:frontend.css --><!-- endbuild -->

The strings <!-- {environment}:{filename} --><!-- endbuild --> will be searched for in the 'replacementPaths' list in the settings and replaced with the generated tags and files

  1. install gassetic npm install -g gassetic

  2. run gassetic for watching and livereloading the files

  3. run gassetic build --env=prod for production build

  4. run gassetic build --env=custom for custom build

Done.

More docs

Contributions

Launch tests

npm install
npm test

The MIT License (MIT)

Copyright (c) 2014 Roman Schejbal

Donate: 1K4HAJqnh8PPomJj47vWNP3GPNF2LE2FEt

gassetic's People

Contributors

romanschejbal avatar ollietb avatar jdeniau avatar alex88 avatar robertfausk avatar warren5236 avatar

Watchers

James Cloos avatar Gencer W. Genç avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.