O Sails possui uma maneira muito prática de trabalhar com arquivos CSS, em que é possível ao programador tanto adicionar grandes e complexas bibliotecas CSS quanto implementar estilos personalizados, caso a caso. O framework, automatiza o trabalho de adicionar as referências de localização dos estilos pra você por meio das Tasks (Tarefas) Sails:.
As Tasks (Tarefas) Sails:
o diretório /tasks
contém um conjunto de tarefas Grunt e suas configurações.
As tarefas são úteis principalmente para agregar partes fixas do front-end (como folhas de estilo,
scripts, modelos de marcação do lado do cliente), mas também podem ser usadas para automatizar todos os tipos de
tarefas
de desenvolvimento repetitivas, desde a compilação do browserify até as migrações de banco de dados.
Um arquivo de task em especial é o /tasks/pipeline.js
, um local onde você organizará os ativos
(assets) que serão injetados em suas
exibições de tela. A parte do pipeline.js
que se ocupa do CSS, já traduzida, pode ser vista abaixo:
// ██████╗ ██╗ █████╗ ██╗███╗ ██╗ ██████╗███████╗███████╗ // ██╔══██╗██║ ██╔══██╗██║████╗ ██║ ██╔════╝██╔════╝██╔════╝ // ██████╔╝██║ ███████║██║██╔██╗ ██║ ██║ ███████╗███████╗ // ██╔═══╝ ██║ ██╔══██║██║██║╚██╗██║ ██║ ╚════██║╚════██║ // ██║ ███████╗██║ ██║██║██║ ╚████║ ██╗╚██████╗███████║███████║ // ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═════╝╚══════╝╚══════╝ // // ███████╗██╗██╗ ███████╗███████╗ // ██╔════╝██║██║ ██╔════╝██╔════╝ // █████╗ ██║██║ █████╗ ███████╗ // ██╔══╝ ██║██║ ██╔══╝ ╚════██║ // ██║ ██║███████╗███████╗███████║ // ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ // // CSS files to inject as <link> tags, in order. // (Arquivos CSS para inserção como tag <link>, na ordem em que aparecem) // // > Note: if you're using built-in LESS support with default settings, // (Observação: se estás utilizando o suporte incorporado LESS como configuração padrão) // > you'll want to change `assets/styles/importer.less` instead. // (precisarás modificar o arquivo 'assets/styles/importer.less' e não este aqui.) // var cssFilesToInject = [ // Bring in `.css` files for themes and style guides (e.g. Bootstrap, Foundation) // (Transporta os arquivos '.css' de temas e guias de estilo (ex.: Boostrap, Foundation) 'dependencies/**/*.css', // All of the rest of your custom `.css` files will be injected here, // (Todas as demais bibliotecas customizadas em '.css' devem ser inseridas aqui,) // in no particular order. To customize the ordering, add additional // (sem nenhuma ordem particular. Para customizar a ordem, descreva-os ) // items here, _above_ this one. // (explicitamente aqui, _abaixo_ deste.) 'styles/**/*.css' ];
Se existirem aquivos '.css' nestes diretórios, eles
serão injetadas em seu HTML como tags <link> entre os comentários
<!--STYLES--><!--STYLES END-->
de qualquer EJS em que apareçam. Exemplo:
<% /* Auto-injected «link» tags: */ %> <!--STYLES--> <link rel="stylesheet" href="/dependencies/bootstrap-4/bootstrap-4.css"> <link rel="stylesheet" href="/dependencies/fontawesome.css"> <link rel="stylesheet" href="/styles/importer.css"> <!--STYLES END-->
Se esta é sua primeira vez aqui, recomendamos a leitura dos conteúdos abaixo antes de continuar:
Basta copiar os arquivos para o diretório /assets/dependencies/
!
Por exemplo: podes acessar o sítio https://bootswatch.com/4/
, escolher um tema, e
substituir pelo
atual diretório bootstrap-x que já existe lá. Desta forma, todo seu Protótipo
passará a ter a identidade visual do tema escolhido
Para saber mais como explorar este recurso, visite a página Sails com Bootstrap !
Basta criar um arquivo '.css' (conforme a sintaxe W3C) no diretório assets/style
!
Por exemplo: se a classe .pointer { cursor: pointer; }
for definida em seu aquivo '.css' criado,
então todo o Protótipo conseguirá utilizá-la.
Se o seu desejo é utilizar bibliotecas prontas de forma unificada, utilize a primeira abordagem (dependencies).
Caso deseje criar seus estilos customizados e também de forma unificada, utilize a segunda abordagem
(styles). Mas se o seu desejo é criar uma customização especial caso a caso (página por página),
então a melhor opção é o recurso do LESS. Como funciona?
O recurso LESS permite a importação de vários estilos '.less' espalhados pelo seu Protótipo em um único arquivo
'importer.css' final, pois, quando estamos codificando estilos específicos e individuais, é melhor mantê-los junto ao
HTML (EJS) que os consome,
facilitando a manutenção futura.
Para dizer ao Sails onde encontrar o arquivo '.less' que deverá ser incorporado, edite o arquivo assets/styles/importer.less
.
O arquivo deverá ter o seguinte conteúdo:
/** * importer.less * * By default, new Sails projects are configured to compile this file * from LESS to CSS. Unlike CSS files, LESS files are not compiled and * included automatically unless they are imported below. * (Por padrão, novos projetos do Sails são configurados para compilar esse arquivo * de LESS para CSS. Ao contrário dos arquivos CSS, os arquivos LESS não são compilados e * incluídos automaticamente, a menos que sejam importados abaixo.) * * The LESS files imported below are compiled and included in the order * they are listed. Mixins, variables, etc. should be imported first * so that they can be accessed by subsequent LESS stylesheets. * (Os arquivos LESS importados abaixo são compilados e incluídos na ordem em que * eles estão listados. Mixins, variáveis, etc. devem ser importados primeiro * para que eles possam ser acessados por folhas de estilo LESS subsequentes.) * * Just like the rest of the asset pipeline bundled in Sails, you can * always omit, customize, or replace this behavior with SASS, SCSS, * or any other Grunt tasks you like. * (Assim como o resto do pipeline de estáticos empacotado no Sails, você pode * sempre omitir, personalizar ou substituir esse comportamento por SASS, SCSS, * ou qualquer outra tarefa do Grunt que você goste.) */ // For example: // (Por exemplo:) // // @import 'variables/colors.less'; // @import 'mixins/foo.less'; // @import 'mixins/bar.less'; // @import 'mixins/baz.less'; // // @import 'styleguide.less'; // @import 'pages/login.less'; // @import 'pages/signup.less'; // // etc.
A importação '.less' precede a definição de estilos em style/*
que por
sua vez precede as definições de dependencies/*
, respeitando-se as regras de precedência (specificity) de classes
definidas no W3C