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