SASS в CSS через задачу ANT + создание каталога

Недавно я начал экспериментировать с SASS [http://sass-lang.com/] в проекте на основе Java. и хотел создать задачу Ant, которая:

  • for each .scss file + subdirectories containing .scss files in a top-level scss directory:
    • create the appropriate directory in a main CSS dir
    • скомпилируйте файл .scss и поместите файл .css туда, где он принадлежит

Как мне это сделать?


person rewinder    schedule 31.08.2011    source источник


Ответы (1)


Исходный ответ от перемотки:


В итоге мне потребовалось некоторое время, чтобы понять это, поэтому я решил опубликовать, как я это сделал. Вот моя установка:

сборка.свойств

css.dir=./template/ver1-0/css/v3
sass.dir=./template/ver1-0/css/v3/scss

Структура каталогов 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

Вот задача Ant:

<!-- 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://stackoverflow.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>

После запуска задачи результаты ожидаемы: файлы .scss компилируются по тому же пути, по которому они были созданы. Если родительский каталог файла еще не существовал под ${css.dir}, то он создается соответствующим образом.

person Community    schedule 22.01.2012
comment
Кажется, мой ANT не может найти исполняемый файл sass, я сталкиваюсь с ошибкой, поскольку не могу запустить программу sass: кто-нибудь может мне помочь ?? - person Tushar Kshirsagar; 14.09.2019