我正在尝试在 ant 文件中使用 SASS,同时删除 ruby 依赖项



我目前正在使用ruby gem SASS以转换我的*。大型项目中的SCSS文件转换为*.css文件。下面是我使用的代码模型:

<?xml version="1.0"?>
<!-- scss to CSS -->
<project name="StackOverflowScssCss" default="sass-compile-to-css" basedir=".">
    <property file="build.properties" />
    <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 -->
        <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" />
            <!-- Disable creation of map file. THIS SHOULD BE A FLAG  -->
            <arg value="--sourcemap=none" />
            <srcfile />
            <targetfile />
            <fileset dir="${sass.dir}" includes="**/*.scss" excludes="**/_*" />
            <mapper type="glob" from="*.scss" to="*.css" />
        </apply>
        <echo message="Done compiling scss files!" />
    </target>
</project>

最终我想删除ruby依赖,所以我一直在看这个libsass maven插件。我知道libsass有很多选择,但我正试图严格坚持Java。有人有这样做的经验吗?我不想运行Node.js, Sass.js或任何东西,我已经为如何做到这一点绞尽脑汁了一整天。任何帮助都非常感激!

有一个Java包装器可以与Maven一起使用。

如果你真的想继续使用Java,你可以选择

  • 使用该包装器并从ant脚本中运行mvn任务(见这里)
  • 适应这个包装器并从中构建自己的Ant任务

为了在JVM上运行,我最终使用了JRuby依赖项。我的代码如下:

<!-- Jruby Dependent SCSS to CSS conversion -->
<path id="JRuby">
    <fileset file="packages/jruby-complete-1.7.20.1.jar"/> <!-- Location of JRuby jar file -->
</path>  
<target name="compileSass" depends="cleanSass">
    <echo message="Compiling scss files..." />
    <!-- JRuby Script to convert files into new directory -->
    <property name="filesIn" value="${dir.scss}/**/[^_]*.scss" />
    <property name="projectDirectory" value="${user.dir}"/>
    <script language="ruby" classpathref="JRuby">
        <![CDATA[
            require ($project.getProperty('projectDirectory')) + '/packages/sass-3.4.14/lib/sass'
            require ($project.getProperty('projectDirectory')) + '/packages/sass-3.4.14/lib/sass/exec'
            files = Dir.glob($project.getProperty('filesIn'))
            files.each do 
                | file |
                newOutDir = File.dirname(file).sub! 'scss', 'css'
                FileUtils::mkdir_p newOutDir
                puts "[sass compiler] From:" + file
                puts "[sass compiler]   To:" + newOutDir + "/" + File.basename(file, ".*") + ".css"
                opts = Sass::Exec::SassScss.new(["--load-path", File.dirname(file), file, File.join(newOutDir, File.basename(file, ".*") + ".css")], 'scss')
                opts.parse
            end
        ]]>
    </script>
    <echo message="Done compiling scss files!" />
</target>

<target name="cleanSass">
    <echo message="removing .css files..." />
    <delete includeemptydirs="true" failonerror="false">
        <fileset dir="${dir.css}" includes="**/*.css" />
    </delete>
    <echo message="removing .css.map files..." />
    <delete includeemptydirs="true" failonerror="false">
        <fileset dir="${dir.css}" includes="**/*.css.map" />
    </delete>
</target>

相关内容

  • 没有找到相关文章

最新更新