diff --git a/.gitignore b/.gitignore index 7268a5f..883e35f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ # SASS # ----------------------------------------------------------------------------- -# Ignorer le cache de Sass +# Ignorer le cache de Sass/Compass .sass-cache # Ignorer la configuration interne de Bunler diff --git a/.gsk/conf/.editorconfig b/.gsk/conf/.editorconfig new file mode 100644 index 0000000..e6414e9 --- /dev/null +++ b/.gsk/conf/.editorconfig @@ -0,0 +1,15 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{js,scss,css,html,hbs,twig,json}] +indent_style = space +indent_size = 2 diff --git a/.gsk/conf/.sass-lint.yml b/.gsk/conf/.sass-lint.yml new file mode 100644 index 0000000..6136971 --- /dev/null +++ b/.gsk/conf/.sass-lint.yml @@ -0,0 +1,104 @@ +# sass-lint config generated by make-sass-lint-config v0.1.2 +# +# The following scss-lint Linters are not yet supported by sass-lint: +# Compass::PropertyWithMixin, ElsePlacement, PropertyCount, SelectorDepth +# UnnecessaryParentReference, VendorPrefixes +# +# The following settings/values are unsupported by sass-lint: +# Linter Indentation, option "allow_non_nested_indentation" +# Linter Indentation, option "character" +# Linter SpaceAfterPropertyColon, option "style" with value "at_least_one_space" +# Linter SpaceBeforeBrace, option "allow_single_line_padding" + +files: + include: '**/*.scss' +options: + formatter: stylish + merge-default-rules: false +rules: + border-zero: 0 + brace-style: + - 1 + - allow-single-line: true + class-name-format: 0 + clean-import-paths: + - 1 + - filename-extension: false + leading-underscore: false + empty-line-between-blocks: + - 1 + - ignore-single-line-rulesets: true + extends-before-declarations: 1 + extends-before-mixins: 1 + final-newline: + - 1 + - include: true + force-attribute-nesting: 0 + force-element-nesting: 0 + force-pseudo-nesting: 0 + function-name-format: + - 1 + - allow-leading-underscore: false + convention: hyphenatedlowercase + hex-length: 0 + hex-notation: 0 + id-name-format: 0 + indentation: + - 1 + - size: 2 + leading-zero: 0 + mixin-name-format: + - 1 + - allow-leading-underscore: false + convention: hyphenatedlowercase + mixins-before-declarations: 1 + nesting-depth: + - 1 + - max-depth: 5 + no-color-keywords: 1 + no-color-literals: 1 + no-css-comments: 1 + no-debug: 1 + no-duplicate-properties: 0 + no-empty-rulesets: 1 + no-ids: 0 + no-important: 0 + no-invalid-hex: 1 + no-mergeable-selectors: 1 + no-misspelled-properties: 0 + no-qualifying-elements: + - 1 + - allow-element-with-attribute: true + allow-element-with-class: false + allow-element-with-id: false + no-trailing-zero: 1 + no-url-protocols: 0 + placeholder-in-extend: 0 + placeholder-name-format: 0 + property-sort-order: 0 + quotes: 0 + shorthand-values: 1 + single-line-per-selector: 1 + space-after-bang: + - 1 + - include: false + space-after-colon: 1 + space-after-comma: 1 + space-before-bang: + - 1 + - include: true + space-before-brace: + - 1 + - include: true + space-before-colon: 1 + space-between-parens: + - 1 + - include: false + trailing-semicolon: 1 + url-quotes: 1 + variable-for-property: 0 + variable-name-format: + - 1 + - allow-leading-underscore: false + convention: hyphenatedlowercase + zero-unit: 1 diff --git a/.gsk/conf/config.rb b/.gsk/conf/config.rb index d6863d2..7df6227 100644 --- a/.gsk/conf/config.rb +++ b/.gsk/conf/config.rb @@ -2,11 +2,11 @@ Sass::Script::Number.precision = 8 # Configuration des chemins des ressources: -sass_dir = 'src/css' -images_dir = 'src/assets/img' -javascripts_dir = 'src/js' -fonts_dir = 'src/assets/fonts' -css_dir = 'build/css' +sass_dir = './src/css' +images_dir = './src/assets/img' +javascripts_dir = './src/js' +fonts_dir = './src/assets/fonts' +css_dir = './build/css' # Configuration des chemins HTTP http_path = '' diff --git a/.gsk/conf/readme.md b/.gsk/conf/readme.md index 44202eb..b26e196 100644 --- a/.gsk/conf/readme.md +++ b/.gsk/conf/readme.md @@ -11,9 +11,12 @@ de votre projet. Cependant, si vous modifiez systématiquement les configurations par défaut, n'hésitez pas à proposer une merge request au starter kit pour que l'on en discute. +* `.editorconfig` Configuration commune pour le [format des fichier pour les IDE](http://editorconfig.org/) * `.jsbeautifyrc` Configuration pour le [formatage automatique du code HTML](https://github.com/beautify-web/js-beautify) * `.eslint.json` Configuration pour [le linting et la vérification de syntaxe des fichiers JS](http://eslint.org) * `.lesshintrc` Configuration pour le [linting des fichiers LESS](https://github.com/lesshint/lesshint) -* `.scss-lint.yml` Configuration pour le [linting des fichiers SCSS](https://github.com/brigade/scss-lint/) +* `.scss-lint.yml` Configuration pour le [linting des fichiers SCSS (pour compass)](https://github.com/brigade/scss-lint/) +* `.sass-lint.yml` Configuration pour le [linting des fichiers SCSS (pour eyeglass)](https://github.com/sasstools/sass-lint) * `.stylintrc` Configuration pour le [linting des fichiers Stylus](https://rosspatton.github.io/stylint/) * `config.rb` Configuration pour la [compilation Compass](http://compass-style.org/) +* `Gemfile` [Config pour dependances ruby (si on utilise Compass)](http://bundler.io/gemfile.html) diff --git a/.gsk/docs/css/compass.md b/.gsk/docs/css/compass.md new file mode 100644 index 0000000..9d4957b --- /dev/null +++ b/.gsk/docs/css/compass.md @@ -0,0 +1,104 @@ + +Sass & Compass +=============================================================================== + +Nous utilisions [Sass](http://sass-lang.com) et [Compass](http://compass-style.org) dans de nombreux projets historiques. + +Configuration: +```json +{ + "css": { + "engine": "compass", + } +} +``` + +Vérifiez votre environnement +------------------------------------------------------------------------------- + +Sass et compass reposent sur [Ruby](https://www.ruby-lang.org/fr/), assurez-vous que vous l'avez bien installé sur votre environnement. + +Il est également nécessaire d'installer l'utilitaire +[Bundler](http://bundler.io/) dans votre environnement global (cela permet +d'avoir plusieurs versions de Sass en fonction de chaque projet). + +Puis exécutez simplement la commande suivante : + +```bash +$ sudo gem install bundler +``` + +Copiez à la racine du projet les fichiers `config.rb` et `Gemfile` que vous trouverez dans le dossier `.gsk/conf`. + +Puis, pour être sûr que vous disposez de la dernière version de Sass et Compass +pour le projet sur lequel vous travaillez, exécutez la commande suivante : + +```bash +$ bundle install --path .gems +``` + +En cas de problème de compilation Sass sur un projet existant commencez +toujours par exécuter la commande suivante : + +```bash +$ bundle update +``` + + +Configuration standard +------------------------------------------------------------------------------- + +Vous pouvez utiliser Sass/Compass de manière traditionnelle, toute la +configuration de l’environnement est centralisé dans le ficher `config.rb`. +Un fichier de configuration près à l’emploi est disponible dans `.gsk/conf` + +Pour compiler les styles du projet vers l'environnement de développement, +exécuter simplement la commande suivante : + +```bash +$ gulp css +``` + +Ou bien pour une compilation standalone: + +```bash +$ bundle exec compass compile +``` + +Pour compiler les styles du projet vers l’environnement de production il suffit +de rajouter le paramètre adéquat : + +```bash +$ gulp css --optimize +``` + +Ou bien en standalone + +```bash +$ bundle exec compass compile -e production +``` + + +Configuration avancée +------------------------------------------------------------------------------- + +### Installer un module via NPM (à préférer autant que possible) + +Exemple avec sass-mq: + +Installer le module NPM `npm install sass-mq --save` + +Puis importez le module dans vos scss `@import 'sass-mq/mq';`. + +### Installer un module via bundler + +Exemple avec Sass-globing : + +Ajouter cette ligne au fichier Gemfile `gem 'sass-globbing'` + +Lancer un `bundle install` en ligne de commande pour que ce nouveau module soit bien installé. + +Puis ajouter la ligne suivante `require 'sass-globbing'` dans le fichier `config.rb`. + +Si votre gem expose des mixins vous devez l’importer dans votre css comme dans cet exemple avec bourbon `@import 'bourbon';`. + diff --git a/.gsk/docs/css/sass.md b/.gsk/docs/css/sass.md index c13d14a..a475a7b 100644 --- a/.gsk/docs/css/sass.md +++ b/.gsk/docs/css/sass.md @@ -1,9 +1,8 @@ -Sass & Compass +Sass (node-sass) =============================================================================== -Pour tous nos projets, nous utilisons [Sass](http://sass-lang.com) et -[Compass](http://compass-style.org) par défaut. +Default css engine. Configuration: ```json @@ -14,91 +13,30 @@ Configuration: } ``` -Vérifier votre environnement +Add a Sass module ------------------------------------------------------------------------------- -Sass repose sur [Ruby](https://www.ruby-lang.org/fr/), assurez-vous que vous -l'avez bien installé sur votre environnement. - -Il est également nécessaire d'installer l'utilitaire -[Bundler](http://bundler.io/) dans votre environnement global (cela permet -d'avoir plusieurs versions de Sass en fonction de chaque projets). - -Si ce n'est pas déjà le cas, exécutez simplement la commande suivante : - +Install it as dependency with npm: ```bash -$ sudo gem install bundler +npm install sass-moduleName --save ``` -Puis, pour être sûr que vous disposer de la dernière version de Sass et Compass -pour le projet sur lequel vous travaillez, exécutez la commande suivante : - -```bash -$ bundle install --path .gems -``` - -En cas de problème de compilation Sass sur un projet existant commencez -toujours par exécuter la commande suivante: - -```bash -$ bundle update -``` - - -Configuration standard -------------------------------------------------------------------------------- - -Vous pouvez utiliser Sass/Compass de manière traditionnelle, toute la -configuration de l'environnement est centralisé dans le ficher `config.rb`. -Un fichier de configuration près à l'emploie est disponible dans `.gsk/conf` - -Pour compiler les styles du projet vers l'environnement de développement, -exécuter simplement la commande suivante : - -```bash -$ gulp css +And import the module in your scss: +```scss +@import 'moduleName'; ``` -Ou bien pour une compilation standalone: -```bash -$ bundle exec compass compile -``` - -Pour compiler les styles du projet vers l'environnement de production il suffit -de rajouter le paramètre adéquat : +### Normalize example +Install it as dependency with npm: ```bash -$ gulp css --optimize +npm install normalize-scss --save ``` -Ou bien en standalone - -```bash -$ bundle exec compass compile -e production +And import the module in your scss: +```scss +@import 'normalize.scss/normalize'; ``` -Configuration avancée -------------------------------------------------------------------------------- - -### Installer un module via NPM (à préférer autant que possible) - -Exemple avec sass-mq: - -Installer le module NPM `npm install sass-mq --save` - -Puis importez le modules dans vos scss `@import 'sass-mq/mq';`. - -### Installer un module via bundler - -Exemple avec Sass-globing : - -Ajouter cette ligne au fichier Gemfile `gem 'sass-globbing'` - -Lancer un `bundle install` en ligne de comande pour que ce nouveau module soit bien installé. - -Puis ajouter la ligne suivante `require 'sass-globbing'` dans le fichier `config.rb`. - -Si votre gem expose des mixins vous devez l’importer dans votre css comme dans cet exemple avec bourbon `@import 'bourbon';`. - diff --git a/.gsk/pipe/css/compass.js b/.gsk/pipe/css/compass.js new file mode 100644 index 0000000..79a1cee --- /dev/null +++ b/.gsk/pipe/css/compass.js @@ -0,0 +1,30 @@ +// Définition du LazyPipe pour utiliser compass +'use strict'; + +// MODULES +// ---------------------------------------------------------------------------- +var lazypipe = require('lazypipe'); +var compass = require('gulp-compass'); +var ENV = require('../../tools/env'); + +// SASS CONFIGURATION +// ---------------------------------------------------------------------------- +var SASS = { + bundle_exec: true, + config_file: './config.rb', + environment: ENV.all.optimize ? 'production' : 'development', + sass : ENV.css['src-dir'], + css : ENV.css['dest-dir'], + relative : false, + // Force only if task is called via `gulp css`. + // That fixes the following bug: `--optimized` option was ignored if built + // files were already cached. + force : require('yargs').argv._[0] === 'css' +}; + +module.exports = function () { + var lazystream = lazypipe() + .pipe(compass, SASS); + + return lazystream(); +}; diff --git a/.gsk/pipe/css/compass.linter.js b/.gsk/pipe/css/compass.linter.js new file mode 100644 index 0000000..212f9ce --- /dev/null +++ b/.gsk/pipe/css/compass.linter.js @@ -0,0 +1,23 @@ +// Définition du LazyPipe pour linter sass +'use strict'; + +// MODULES +// ---------------------------------------------------------------------------- +var lazypipe = require('lazypipe'); +var scsslint = require('gulp-scss-lint'); + + +// LINTER CONFIGURATION +// ---------------------------------------------------------------------------- +var LINT = { + bundleExec: true, + config: './.scss-lint.yml' +}; + +module.exports = function () { + var lazystream = lazypipe() + .pipe(scsslint, LINT) + .pipe(scsslint.failReporter); + + return lazystream(); +}; diff --git a/.gsk/pipe/css/sass.js b/.gsk/pipe/css/sass.js index 79a1cee..805c56e 100644 --- a/.gsk/pipe/css/sass.js +++ b/.gsk/pipe/css/sass.js @@ -1,30 +1,25 @@ -// Définition du LazyPipe pour utiliser compass +// Define the LazyPipe to use eyeglass 'use strict'; // MODULES // ---------------------------------------------------------------------------- var lazypipe = require('lazypipe'); -var compass = require('gulp-compass'); -var ENV = require('../../tools/env'); +var sass = require('gulp-sass'); +var importer = require('node-sass-import'); +var ENV = require('../../tools/env'); // SASS CONFIGURATION // ---------------------------------------------------------------------------- var SASS = { - bundle_exec: true, - config_file: './config.rb', - environment: ENV.all.optimize ? 'production' : 'development', - sass : ENV.css['src-dir'], - css : ENV.css['dest-dir'], - relative : false, - // Force only if task is called via `gulp css`. - // That fixes the following bug: `--optimized` option was ignored if built - // files were already cached. - force : require('yargs').argv._[0] === 'css' + sass: ENV.css['src-dir'], + css: ENV.css['dest-dir'], + importer: importer, + precision: 8 }; module.exports = function () { var lazystream = lazypipe() - .pipe(compass, SASS); + .pipe(sass, SASS); return lazystream(); }; diff --git a/.gsk/pipe/css/sass.linter.js b/.gsk/pipe/css/sass.linter.js index 212f9ce..e9bc116 100644 --- a/.gsk/pipe/css/sass.linter.js +++ b/.gsk/pipe/css/sass.linter.js @@ -4,20 +4,20 @@ // MODULES // ---------------------------------------------------------------------------- var lazypipe = require('lazypipe'); -var scsslint = require('gulp-scss-lint'); +var sasslint = require('gulp-sass-lint'); // LINTER CONFIGURATION // ---------------------------------------------------------------------------- var LINT = { - bundleExec: true, - config: './.scss-lint.yml' + configFile: './.sass-lint.yml' }; module.exports = function () { var lazystream = lazypipe() - .pipe(scsslint, LINT) - .pipe(scsslint.failReporter); + .pipe(sasslint, LINT) + .pipe(sasslint.format) + .pipe(sasslint.failOnError); return lazystream(); }; diff --git a/.sass-lint.yml b/.sass-lint.yml new file mode 100644 index 0000000..6136971 --- /dev/null +++ b/.sass-lint.yml @@ -0,0 +1,104 @@ +# sass-lint config generated by make-sass-lint-config v0.1.2 +# +# The following scss-lint Linters are not yet supported by sass-lint: +# Compass::PropertyWithMixin, ElsePlacement, PropertyCount, SelectorDepth +# UnnecessaryParentReference, VendorPrefixes +# +# The following settings/values are unsupported by sass-lint: +# Linter Indentation, option "allow_non_nested_indentation" +# Linter Indentation, option "character" +# Linter SpaceAfterPropertyColon, option "style" with value "at_least_one_space" +# Linter SpaceBeforeBrace, option "allow_single_line_padding" + +files: + include: '**/*.scss' +options: + formatter: stylish + merge-default-rules: false +rules: + border-zero: 0 + brace-style: + - 1 + - allow-single-line: true + class-name-format: 0 + clean-import-paths: + - 1 + - filename-extension: false + leading-underscore: false + empty-line-between-blocks: + - 1 + - ignore-single-line-rulesets: true + extends-before-declarations: 1 + extends-before-mixins: 1 + final-newline: + - 1 + - include: true + force-attribute-nesting: 0 + force-element-nesting: 0 + force-pseudo-nesting: 0 + function-name-format: + - 1 + - allow-leading-underscore: false + convention: hyphenatedlowercase + hex-length: 0 + hex-notation: 0 + id-name-format: 0 + indentation: + - 1 + - size: 2 + leading-zero: 0 + mixin-name-format: + - 1 + - allow-leading-underscore: false + convention: hyphenatedlowercase + mixins-before-declarations: 1 + nesting-depth: + - 1 + - max-depth: 5 + no-color-keywords: 1 + no-color-literals: 1 + no-css-comments: 1 + no-debug: 1 + no-duplicate-properties: 0 + no-empty-rulesets: 1 + no-ids: 0 + no-important: 0 + no-invalid-hex: 1 + no-mergeable-selectors: 1 + no-misspelled-properties: 0 + no-qualifying-elements: + - 1 + - allow-element-with-attribute: true + allow-element-with-class: false + allow-element-with-id: false + no-trailing-zero: 1 + no-url-protocols: 0 + placeholder-in-extend: 0 + placeholder-name-format: 0 + property-sort-order: 0 + quotes: 0 + shorthand-values: 1 + single-line-per-selector: 1 + space-after-bang: + - 1 + - include: false + space-after-colon: 1 + space-after-comma: 1 + space-before-bang: + - 1 + - include: true + space-before-brace: + - 1 + - include: true + space-before-colon: 1 + space-between-parens: + - 1 + - include: false + trailing-semicolon: 1 + url-quotes: 1 + variable-for-property: 0 + variable-name-format: + - 1 + - allow-leading-underscore: false + convention: hyphenatedlowercase + zero-unit: 1 diff --git a/.scss-lint.yml b/.scss-lint.yml deleted file mode 100644 index ce7dd4f..0000000 --- a/.scss-lint.yml +++ /dev/null @@ -1,394 +0,0 @@ -# Configuration inspirée par https://github.com/kaelig/scss-lint-w3c -# adapté pour Clever Age - -# Cette configuration reprend tous les settings, même ceux par défaut définis -# ici : https://github.com/causes/scss-lint/blob/master/config/default.yml - -scss_files: "**/*.scss" - -linters: - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#bangformat - # La spec mentionne rarement !important mais semble favoriser un espace avant - # le point d'exclamation : http://www.w3.org/TR/CSS21/cascade.html#important-rules - BangFormat: - enabled: true - space_before_bang: true - space_after_bang: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#borderzero - # Dans la mesure ou nous utilisons indifféremment "border: none" et - # "border: 0" on ne force pas les choses à ce niveau (ça n'aurait d’intérêt - # que si l'on souhaite forcer un cohérence pour faire des recherches) - BorderZero: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#colorkeyword - # Nous nous interdisons les mots clé pour les couleurs. On utilisera toujours - # Les notation plus complètes (hex, rgb, hsl et variable). - ColorKeyword: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#colorvariable - # L'utilisation des variables pour définir les couleurs est obligatoire. Cela - # nous permet de garantir la modularité de notre code Sass. - ColorVariable: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#comment - # On ne veux pas garder de commentaires (`/* */`) dans nos CSS générés, - # Pour garantir ça, on force l'usage des commentaire Sass (`//`) - Comment: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/compass/README.md - # Même si l'on utilise compass, dans la mesure ou nous utilisons autoprefixer - # il n'est pas utile de forcer l'usage des mixin Compass. - Compass::PropertyWithMixin: - enabled: false - # ignore: - # - 'align-content' - # - 'align-items' - # - 'align-self' - # - 'animation' - # - 'animation-delay' - # - 'animation-direction' - # - 'animation-duration' - # - 'animation-fill-mode' - # - 'animation-iteration-count' - # - 'animation-name' - # - 'animation-play-state' - # - 'animation-timing-function' - # - 'appearance' - # - 'apply-origin' - # - 'background' - # - 'background-clip' - # - 'background-image' - # - 'background-origin' - # - 'background-size' - # - 'border-bottom-left-radius' - # - 'border-bottom-radius' - # - 'border-bottom-right-radius' - # - 'border-image' - # - 'border-left-radius' - # - 'border-radius' - # - 'border-right-radius' - # - 'border-top-left-radius' - # - 'border-top-radius' - # - 'border-top-right-radius' - # - 'box-shadow' - # - 'box-sizing' - # - 'break-after' - # - 'break-before' - # - 'break-inside' - # - 'column-break' - # - 'column-break-after' - # - 'column-break-before' - # - 'column-break-inside' - # - 'column-count' - # - 'column-fill' - # - 'column-gap' - # - 'column-rule' - # - 'column-rule-color' - # - 'column-rule-style' - # - 'column-rule-width' - # - 'column-span' - # - 'column-width' - # - 'columns' - # - 'content' - # - 'display-flex' - # - 'filter' - # - 'flex' - # - 'flex-basis' - # - 'flex-direction' - # - 'flex-flow' - # - 'flex-grow' - # - 'flex-shrink' - # - 'flex-wrap' - # - 'flexbox' - # - 'flow-from' - # - 'flow-into' - # - 'font-face' - # - 'hyphens' - # - 'inline-block' - # - 'justify-content' - # - 'keyframes' - # - 'list-style' - # - 'list-style-image' - # - 'opacity' - # - 'order' - # - 'selection' - # - 'text-shadow' - # - 'transform' - # - 'transform-origin' - # - 'transition' - # - 'transition-delay' - # - 'transition-duration' - # - 'transition-property' - # - 'transition-timing-function' - # - 'word-break' - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#debugstatement - # Ça nous permet d'être sure qu'on ne laisse pas trainer de @debug inutile - DebugStatement: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#declarationorder - # Ça permet de garantir un cohérence de lisibilité du code d'un projet à - # l'autre et d'une personne à l'autre. - DeclarationOrder: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#duplicateproperty - # Dans la mesure ou ça ne gère pas les exceptions acceptables (background - # avec couleur hexa et rgba par exemple) on le désactive. - DuplicateProperty: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#elseplacement - # Ça permet de garantir la cohérence d'écriture de code. le parti pris et de - # mettre les `@else` sur un e nouvelle ligne. - ElsePlacement: - enabled: true - style: new_line - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#emptylinebetweenblocks - # Encore une fois, c'est uniquement pour garantir la cohérence de code - EmptyLineBetweenBlocks: - enabled: true - ignore_single_line_blocks: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#emptyrule - # C'est pour éviter de laisser traîner des trucs qui servent à rien dans le code - EmptyRule: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#emptyrule - # C'est pour donner de la cohérence avec les autres fichier (en particulier JS) - # Le plus simple est de configurer votre éditeur pour qu'il rajoute automatiquement - # cette ligne vide (c'est la configuration recommandé dans notre fichier .editorconfig) - FinalNewline: - enabled: true - present: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#hexlength - # On n'impose pas la longueur des couleurs hexadécimal car ça n'a pas d'impact sur la lisibilité - HexLength: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#hexnotation - # On n'impose pas la longueur des couleurs hexadécimal car ça n'a pas d'impact sur la lisibilité - HexNotation: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#hexvalidation - # Si on écrit des couleurs hexadécimal, on s'assure qu'elle le sont correctement. - HexValidation: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#idselector - # En théorie oui, dans la pratique non. - IdSelector: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#importantrule - # En théorie oui, dans la pretique non. - ImportantRule: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#importpath - # Permet de garantir que les chemin d'import sont toujours écrit de manière normé et compact - ImportPath: - enabled: true - leading_underscore: false - filename_extension: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#indentation - # La encore c'est pour assurer un cohérence avec ce qu'on fait dans d'autre langage. - Indentation: - enabled: true - allow_non_nested_indentation: false - width: 2 - character: space - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#leadingzero - # Ça ne change pas fondamentalement la lisibilité, on laisse donc chacun faire comme il veut. - LeadingZero: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#mergeableselector - # Permet de garantir qu'on ne définie pas deux fois le même sélecteur et qu'à chaque - # fois qu'on peut faire une imbrication de sélecteur, celle-ci est faite. - MergeableSelector: - enabled: true - force_nesting: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#nameformat - # Notre convention de nommage pour les mixins et fonctions est - # "tout en minuscule avec traits d'union comme séparateur". - NameFormat: - enabled: true - allow_leading_underscore: false - convention: hyphenated_lowercase - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#nestingdepth - # On limite l'imbrication des sélecteurs pour éviter d'avoir des sélecteurs trop lourds. - NestingDepth: - enabled: true - max_depth: 5 - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#placeholderinextend - # Even if it's a good idea, we sometimes extend classes - PlaceholderInExtend: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#propertycount - # Nous n'avons pas de règles spécifique sur cette question. - PropertyCount: - enabled: false - # include_nested: false - # max_properties: 5 - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#propertysortorder - # Beaucoup trop lourd et sujet à controverse dans notre contexte. - PropertySortOrder: - enabled: false - # ignore_unspecified: false - # order: nil # Ordre alphabétique - # separate_groups: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#propertyspelling - # On ne vérifie pas l'usage de propriété inconnus - PropertySpelling: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#qualifyingelement - # Seul les sélecteurs d'attribut peuvent être spécialisé à l'aide d'un sélecteur d'élément. - QualifyingElement: - enabled: true - allow_element_with_attribute: true - allow_element_with_class: false - allow_element_with_id: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#selectordepth - # On s'assure qu'on est cohérent avec la règle NestingDepth - SelectorDepth: - enabled: true - max_depth: 5 - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#selectorformat - # Clever Age utilise la convention BEM - SelectorFormat: - enabled: false - # convention: BEM - # ignored_types: - # ignored_names: - # attribute_convention: hyphenated_lowercase - # class_convention: hyphenated_lowercase - # id_convention: hyphenated_lowercase - # placeholder_convention: hyphenated_lowercase - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#shorthand - # A chaque fois que c'est possible on préférera les notations compact - Shorthand: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#singlelineperproperty - # Cette propriété garantie un code plus lisible - SingleLinePerProperty: - enabled: true - allow_single_line_rule_sets: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#singlelineperselector - # Le principale intéret de forcer un selecteur par ligne c'est d'avoir - # des diff de version GIT plus facile à lire - SingleLinePerSelector: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#spaceaftercomma - # Là encore il s'agit d'améliorer la lisibilité - SpaceAfterComma: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#spaceafterpropertycolon - # Améliore la lisibilité mais sans être trop contraignant - SpaceAfterPropertyColon: - enabled: true - style: at_least_one_space - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#spaceafterpropertyname - # Améliore la lisibilité an garantissant que ":" est toujours collé au nom de propriété CSS - SpaceAfterPropertyName: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#spacebeforebrace - # La convention est de toujours mettre un espace entre un sélecteur est une accolade - # On demande a ce que l'accolage soit sur la même ligne que le sélecteur pour que les - # éditeur de code puisse proposer du folding le plus compact possible. - SpaceBeforeBrace: - enabled: true - style: space - allow_single_line_padding: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#spacebetweenparens - # La convention est de ne pas avoir d'espace entre les parenthèses. - # Ainsi, hsl(0, 100%, 50%) ne sera jamais écris hsl( 0, 100%, 50% ) - SpaceBetweenParens: - enabled: true - spaces: 0 - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#stringquotes - # Il n'y a pas de consensus claire sur la question - StringQuotes: - enabled: false - # style: single_quotes # ou double_quotes - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#trailingsemicolon - # On garantis que les règles se termine toujours bien par un point-virgule - TrailingSemicolon: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#trailingzero - # On garantis qu'on ne laisse pas traîner de zéro inutiles - TrailingZero: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#unnecessarymantissa - # Même chose que pour la propriété précédente, on ne laisse pas traîner de zéro inutile - UnnecessaryMantissa: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#unnecessaryparentreference - # On s'assure qu'on ne met pas de référence & qui ne servent à rien - UnnecessaryParentReference: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#urlformat - # On ne force pas de règle particulière sur les URL - UrlFormat: - enabled: false - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#urlquotes - # Cohérence avec d'autre notation Sass - UrlQuotes: - enabled: true - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#variableforproperty - # L'usage de variables n'est pas obligatoire - VariableForProperty: - enabled: false - # properties: - # - color - # - font - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#vendorprefix - # Pas de préfixe vendeur dans notre code. On utilise Autoprefixer pour ça. - VendorPrefixes: - enabled: true - identifier_list: base # ou bourbon si on utilise cette bibliothèque - additional_identifiers: [] - excluded_identifiers: [] - - # https://github.com/causes/scss-lint/blob/master/lib/scss_lint/linter/README.md#zerounit - # On ne met pas d'unité sur la valeur zéro - ZeroUnit: - enabled: true diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 5637b26..0000000 --- a/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' - -gem 'compass', '1.0.3' # Compass -gem 'sass', '3.4.18' # Sass, évite les mauvaises surprises -gem 'oily_png', '1.2.0' # OilyPNG, accélère la création des sprites -gem 'scss_lint', '0.42.2' # Linting des fichiers de style diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index eeda174..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,37 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - chunky_png (1.3.4) - compass (1.0.3) - chunky_png (~> 1.2) - compass-core (~> 1.0.2) - compass-import-once (~> 1.0.5) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - sass (>= 3.3.13, < 3.5) - compass-core (1.0.3) - multi_json (~> 1.0) - sass (>= 3.3.0, < 3.5) - compass-import-once (1.0.5) - sass (>= 3.2, < 3.5) - ffi (1.9.10) - multi_json (1.11.2) - oily_png (1.2.0) - chunky_png (~> 1.3.1) - rainbow (2.0.0) - rb-fsevent (0.9.6) - rb-inotify (0.9.5) - ffi (>= 0.5.0) - sass (3.4.18) - scss_lint (0.42.2) - rainbow (~> 2.0) - sass (~> 3.4.15) - -PLATFORMS - ruby - -DEPENDENCIES - compass (= 1.0.3) - oily_png (= 1.2.0) - sass (= 3.4.18) - scss_lint (= 0.42.2) diff --git a/config.rb b/config.rb deleted file mode 100644 index ccbb92c..0000000 --- a/config.rb +++ /dev/null @@ -1,49 +0,0 @@ -# Nombre de décimal après la virgule, utile pour la précision des em -Sass::Script::Number.precision = 8 - -# Add node_modules directory as path to resolve import -additional_import_paths = ['node_modules'] - -# Load compass plugin by gems : -# require 'sass-globbing' - -# Configuration des chemins des ressources: -sass_dir = './src/css' -images_dir = './src/assets/img' -javascripts_dir = './src/js' -fonts_dir = './src/assets/fonts' -css_dir = './build/css' - -# Configuration des chemins HTTP -http_path = '' -http_stylesheets_path = '' -http_images_path = '../img' -http_javascripts_path = '../js' -http_fonts_path = '../fonts' - -# Configuration spécifique à chaque environement -if environment == :production - # options de sortie - output_style = :compressed -else - # options de sortie - output_style = :expanded -end - - -# Supprimer le hash générer par compass sur le nom des sprites -on_sprite_saved do |filename| - if File.exists?(filename) - FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}\.png$}, '.png') - end -end - -# Remplacer les reférence au sprite avec hash dans la CSS par ceux sans hash -on_stylesheet_saved do |filename| - if File.exists?(filename) - css = File.read filename - File.open(filename, 'w+') do |f| - f << css.gsub(%r{-s[a-z0-9]{10}\.png}, '.png') - end - end -end diff --git a/package.json b/package.json index 49e1cef..cc52c60 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,7 @@ "homepage": "https://github.com/cleverage/garden-starter-kit", "title": "Garden Starter Kit", "description": "Set de base pour les projets Garden statiques.", -<<<<<<< d464be779a04eb7d45f44b437c2a220e248805df - "version": "2.0.0-beta7", -======= - "version": "2.0.0-beta6", ->>>>>>> Replace jshint and jscs by eslint #81 + "version": "2.0.0-beta8", "license": "MIT", "repository": { "type": "git", @@ -32,6 +28,7 @@ "gulp-less": "3.3.0", "gulp-plumber": "1.1.0", "gulp-postcss": "6.4.0", + "gulp-sass": "3.1.0", "gulp-sourcemaps": "2.4.1", "gulp-stylus": "2.6.0", "gulp-svgstore": "6.1.0", @@ -39,6 +36,8 @@ "gulp-util": "3.0.8", "jquery": "3.2.1", "lazypipe": "1.0.1", + "node-sass": "4.5.0", + "node-sass-import": "1.1.1", "merge-stream": "1.0.1", "require-dir": "0.3.1", "run-sequence": "1.2.2", @@ -48,7 +47,7 @@ "vinyl-source-stream": "1.1.0", "webpack": "2.3.1", "webpack-stream": "3.2.0", - "yargs": "6.6.0" + "yargs": "7.0.2" }, "devDependencies": { "browser-sync": "2.18.8", @@ -60,20 +59,20 @@ "gulp-hb": "6.0.2", "gulp-hbs": "0.2.0", "gulp-help": "1.6.1", - "gulp-lesshint": "2.1.0", + "gulp-lesshint": "3.0.0", "gulp-markdown": "1.2.0", "gulp-newer": "1.3.0", "gulp-prompt": "0.2.0", "gulp-rename": "1.2.2", + "gulp-sass-lint": "1.3.2", "gulp-scss-lint": "0.4.0", "gulp-sftp": "0.1.5", "gulp-stylint": "4.0.0", + "gulp-svgstore": "6.0.0", "gulp-twig": "0.7.0", "kss": "3.0.0-beta.18", - "nproxy": "stephane-tessier/nproxy#1.7.1" - }, - "scripts": { - "install": "bundle install --path .gems" + "nproxy": "stephane-tessier/nproxy#1.7.1", + "sass-lint": "1.10.2" }, "engines": { "node": ">= 5.0.3", diff --git a/readme.dist.md b/readme.dist.md index 27ee82a..53044cb 100644 --- a/readme.dist.md +++ b/readme.dist.md @@ -179,8 +179,7 @@ $ gulp live --relax $ gulp live --doc ``` -**build** : Contruit la version statique du projet (compile les fichiers Sass, -assemble les fichiers HTML, etc.) +**build** : Contruit la version statique du projet (compile les fichiers Sass, assemble les fichiers HTML, etc.) ```bash $ gulp build @@ -235,17 +234,17 @@ $ gulp sftp-deploy Outils utilisés ------------------------------------------------------------------------------- -Les outils listés ici doivent êtres utilisés obligatoirement lorsqu'on démarre -un nouveau projet d'intégration. Ils garantissent un _workflow_ de travail optimal. +Les outils listés ici doivent êtres utilisés obligatoirement lorsqu’on démarre un nouveau projet d’intégration. Ils garantissent un _workflow_ de travail optimal. * [Gulp](http://gulpjs.com/) * [Linter](.gsk/docs/linter.md) Les outils listés ci-après sont à utiliser et à configurer pour votre projet. -Ils sont tous utilisables tel quel, mais le _starter kit_ est suffisamment flexible pour s'adapter à vos besoins. Le choix d'utilisation de ces outils se fait via le fichier `.gsk/config.json`, voir les instructions de configuration ci-après : +Ils sont tous utilisables tels quels, mais le _starter kit_ est suffisamment flexible pour s’adapter à vos besoins. Le choix d'utilisation de ces outils se fait via le fichier `.gsk/config.json`, voir les instructions de configuration ci-après : ### CSS -* [Sass/Compass](.gsk/docs/css/sass.md) [Recommandé] +* [Sass](.gsk/docs/css/sass.md) [Recommandé] +* ~~[Sass/Compass](.gsk/docs/css/compass.md)~~ * ~~[Stylus](.gsk/docs/css/stylus.md)~~ * ~~[LESS](.gsk/docs/css/less.md)~~ diff --git a/readme.md b/readme.md index 870474e..437264b 100644 --- a/readme.md +++ b/readme.md @@ -59,7 +59,8 @@ Les outils listés ci-après sont à configurer via le fichier `.gsk/config.json Voir les instructions de configuration ci-après : #### CSS -* [Sass/Compass](.gsk/docs/css/sass.md) [Recommandé] +* [Sass](.gsk/docs/css/sass.md) [Recommandé] +* [Sass/Compass](.gsk/docs/css/compass.md) * [Stylus](.gsk/docs/css/stylus.md) * [LESS](.gsk/docs/css/less.md) * Si vous ne choisissez pas de préprocesseur, le projet n’utilisera que PostCss diff --git a/src/css/doc.scss b/src/css/doc.scss index fce898e..3403786 100644 --- a/src/css/doc.scss +++ b/src/css/doc.scss @@ -17,7 +17,6 @@ $color-fg-dark-cell: #FFFFFF; $color-fg-light-cell: $darker-grey; $color-bg-light-cell: #FFFFFF; - // Grid $column: 4rem; $gap: 1rem; diff --git a/src/css/styleguide.md b/src/css/styleguide.md index d19aaac..526761d 100644 --- a/src/css/styleguide.md +++ b/src/css/styleguide.md @@ -1,4 +1,4 @@ Guide des styles =============================================================================== -Page d'accueil du guide des styles en markdown. +Page d’accueil du guide des styles en markdown. diff --git a/src/css/styles.scss b/src/css/styles.scss index ef94bdc..c2b2bf5 100644 --- a/src/css/styles.scss +++ b/src/css/styles.scss @@ -3,61 +3,60 @@ // -------------------------- /// Générez un guide des styles - // - // Si vous commentez votre code en utilisant la syntaxe - // [KSS](https://github.com/kss-node/kss/blob/spec/SPEC.md), - // le Starter Kit generera un guide des styles dans la - // documentation a chaque build du projet. - // - // Styleguide Introduction - +// +// Si vous commentez votre code en utilisant la syntaxe +// [KSS](https://github.com/kss-node/kss/blob/spec/SPEC.md), +// le Starter Kit generera un guide des styles dans la +// documentation a chaque build du projet. +// +// Styleguide Introduction /// Une palette de couleur - // - // Si vous voulez documenter des couleurs, vous pouvez - // le faire de cette manière grace au block Colors. - // - // Colors: - // denim : #1e5bc6 - // flamingo : #f15145 - // alert : #f33121 - red for error - // $color-black : #000 - real black - // - // Styleguide Introduction.Couleur +// +// Si vous voulez documenter des couleurs, vous pouvez +// le faire de cette manière grace au block Colors. +// +// Colors: +// denim : #1e5bc6 +// flamingo : #f15145 +// alert : #f33121 - red for error +// $color-black : #000 - real black +// +// Styleguide Introduction.Couleur /// Font d’icon Fontello - // - // De la même façon que pour les fonts grace au block - // Icons vous pouvez documenter les icons de la font. - // - // Implique que la font d'icon se nomme fontello - // Sinon il faut changer celle-ci dans doc.scss - // - // Icons: - // left : ← - // up : ↑ - // right : → - // down : ↓ - // comment : 💬 - bulle - // - // Styleguide Introduction.Icons - +// +// De la même façon que pour les fonts grâce au block +// Icons vous pouvez documenter les icons de la font. +// +// Implique que la font d’icon se nomme fontello +// Sinon il faut changer celle-ci dans doc.scss +// +// Icons: +// left : ← +// up : ↑ +// right : → +// down : ↓ +// comment : 💬 - bulle +// +// Styleguide Introduction.Icons /// Exemple UI - // - // Markup: ../html/partials/_exemple.twig - // - // Styleguide Introduction.UI +// +// Markup: ../html/partials/_exemple.twig +// +// Styleguide Introduction.UI /// SVG - // - // Markup: - // - // - // - // - // Styleguide Introduction.Svg +// +// Markup: +// +// +// +// +// Styleguide Introduction.Svg body { font: 1em sans-serif; + background: url('../img/clever-age-logo.png') no-repeat top right; }