java ant sass build.xml

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.