java - SASS a CSS a través de una tarea ANT+creación de directorio
build.xml (1)
Recientemente comencé a jugar con SASS [ http://sass-lang.com/ ] en un proyecto basado en Java y quería crear una tarea Ant que:
- para cada archivo .scss + subdirectorios que contengan archivos .scss en un directorio scss de nivel superior:
- Crea el directorio apropiado en un directorio principal de CSS.
- compile el archivo .scss y coloque el archivo .css donde pertenece
¿Cómo voy a hacer esto?
Respuesta original por :
Terminó tomándome algo de tiempo para averiguarlo, así que pensé que publicaría cómo lo logré. Aquí está mi configuración:
construir.propiedades
css.dir=./template/ver1-0/css/v3
sass.dir=./template/ver1-0/css/v3/scss
estructura de directorio scss :
/template/ver1-0/css/v3/scss
+ widgets
- widgettest.scss
- widgettest2.scss
+ global
- globaltest.scss
- globaltest2.css
- file1.scss
- file2.scss
- _partial1.scss
- _partial2.scss
Aquí está la tarea de la hormiga :
<!-- scss to CSS -->
<!-- via: http://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant-build.html -->
<target name="sass-compile-to-css">
<echo message="Compiling scss files to css..." />
<!-- create the css destination dir if it doesn''t already exist -->
<property name="css-dest" location="${css.dir}"/>
<echo message="Creating directory at ${css.dir} [if it doesn''t yet exist]" />
<mkdir dir="${css-dest}" />
<!-- create subdirs if necessary
via: https://.com/questions/536511/how-to-create-directories-specified-by-a-mapper-in-ant -->
<echo message="Creating css directories (and temporary .css files) for .scss to be compiled..." />
<touch mkdirs="true">
<fileset dir="${sass.dir}" includes="**/*.scss" excludes="**/_*" />
<mapper type="glob" from="*.scss" to="${css.dir}/*.css"/>
</touch>
<echo message="Running sass executable against sass files and compiling to CSS directory [${css-dest}] " />
<!-- run sass executable -->
<apply executable="sass" dest="${css-dest}" verbose="true" force="true" failonerror="true">
<arg value="--unix-newlines" />
<srcfile />
<targetfile />
<fileset dir="${sass.dir}" includes="**/*.scss" excludes="**/_*" />
<mapper type="glob" from="*.scss" to="*.css"/>
</apply>
<echo message="Done compiling scss files!" />
</target>
Después de ejecutar la tarea, los resultados son los esperados: los archivos .scss se compilan en la misma ruta en la que se crearon. Si el directorio principal del archivo aún no existe en ${css.dir}
, se creará en consecuencia.