【问题标题】:Best way to auto compile compass-style SASS via maven通过 maven 自动编译指南针式 SASS 的最佳方法
【发布时间】:2012-08-10 18:23:55
【问题描述】:

参考SASS implementation for Java?

在 maven 目标分别编译包中自动编译 compass-style.org 样式表的最佳方法是什么?

我不想发布太多自编译库,也不想通过 https://code.google.com/p/sass-java (https://github.com/darrinholst/sass-java) 等过滤器动态发布编译文件

除了连接需要在客户端安装 ruby​​ 和 compass 的 shellscripts / ant 脚本之外,还有其他选择吗?

SASS 和 Compass 样式表之间的详细区别是什么,经常使用“compass”时“sass-tools”有什么问题吗? => 哪些 mvn 插件是“指南针感知”的?!

【问题讨论】:

    标签: maven sass maven-plugin compass-sass


    【解决方案1】:

    我想你知道这个 Maven 插件(在SASS implementation for Java? 中提到)? :https://github.com/Jasig/sass-maven-plugin

    (我自己还没试过。)

    更新:不再支持该插件。然而,目前这个分叉似乎很健康,所以它可能是一些人的选择:https://github.com/GeoDienstenCentrum/sass-maven-plugin

    【讨论】:

    • 不,这个特别的还没有穿过我的路,谢谢你的提示。我会试一试,虽然它并没有真正改变行为,但会简化我项目中的依赖关系
    • 使用 sass-maven-plugin 版本 1.1.1+,因为 1.1.0 在 windows 下有缺陷。
    • sass-maven-plugin 现在不受支持
    • 感谢@monarch 的更新。我添加了一个 sass-maven-plugin 分支的链接,该分支仍在维护中。
    【解决方案2】:

    我发现了这个,它不是一个特殊的 compass/sass 插件,但它可以工作

    https://gist.github.com/1671207

    【讨论】:

    • 在 shell 上不需要 ruby​​,没有任何其他依赖项,仅使用 java ......就像我正在寻找的那样。不完美但几乎足够好!非常感谢。
    【解决方案3】:

    我使用的是 nl.geodienstencentrum.maven 的 Sass Maven 插件,但它使用 Ruby,速度很慢。

    我现在切换到: Libsass Maven 插件

    https://github.com/warmuuh/libsass-maven-plugin

    这使用 C 并且我们的编译时间要少得多(8.6 秒到 -> 2 秒)

    【讨论】:

    • 这个方案优于jruby版本。它速度更快,而且像 include_pathoutputStyle 这样的附加选项确实有效。
    【解决方案4】:

    我尝试了几种方法来编译我的应用程序(java、Wicket、使用 Zurb Foundation Sites、具有 lib-sass 依赖的 node-sass)。说实话,所有的 maven 插件都是死路一条,尤其是当我的 scss 包含 !global 标志时。 (这面旗帜带有地基。) 所以我们最终的解决方案是先用 npm 构建,然后使用 maven。 Npm 构建到 src/main/webapp/"myDir" 目录中。我在 git 中排除了这个目录。 jason 文件有如下一行:

    "scripts": {
        ....
        "build-css": "node node_modules/node-sass/bin/node-sass --include-path myScssDir myScssDir/myScss.scss --output  src/main/webapp/myDir/css",
        ....
    }
    

    然后用 maven 构建,它会将构建的 css 移动到我的战争中。 为了获得一些帮助(创建不存在的“myDir”目录),我使用了 mkdirp。 在我的杰森中有:

    "scripts": {
        "create-dirs": "mkdirp src/main/webapp/myDir/",
        ....
    }
    

    所以我运行“npm i”将我的所有依赖项本地安装到节点模块目录中。这是 gitignored。

    然后我运行“npm run create-dirs”来创建必要的 myDir。这也被忽略了。

    然后我运行“npm run build-css”将我的 css-s 和 js-s 编译到 myDir 中。

    最后我做了一个 maven 构建。

    使用 hudson/jenkins 构建,您可以轻松完成这些工作。

    我能想到的一个改进是在 maven 构建期间通过 ant 运行 npm。当我有这方面的概念证明时,我会回复你。

    //一个额外的提示:如果你是在企业环境和Windows7下开发,你可能需要为npm build的符号链接添加权限。如果你在 npm build 中发现错误,值得一试:https://superuser.com/questions/104845/permission-to-make-symbolic-links-in-windows-7

    【讨论】:

      【解决方案5】:

      由于libsass-is-deprecatedfork 基于相同的“归档库”:https://github.com/bit3/jsass ..基于 libsass...

      How do I migrate? ...有人可能会觉得这很有用:

      1. [choco|brew|npm] install sass
        

        来源:https://sass-lang.com/install (我不会 这样做,但我们可以!)

      2. 使用"good ole" exec-maven-plugin,采用自Spring Petclinic (site|repo)(之前提取-,最初他们使用相同的libsass-maven-plugin):

        <profile>
          <id>css</id>
          <build>
            <plugins>
              <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>3.0.0</version> 
                <executions>
                  <execution>
                    <!-- process-resources > genererate-resources (i.e. later)-->
                    <phase>process-resources</phase>
                  </execution>
                </executions>
                <configuration>
                  <!-- must be in $PATH !! -->
                  <executable>sass</executable>
                  <!-- it is quite silent, when everything works well -->
                  <useMavenLogger>true</useMavenLogger>
                  <arguments>
                    <!-- additional sass path(s), adjust to our suits -->
                    <argument>--load-path=${project.build.directory}/webjars/META-INF/resources/webjars/bootstrap/${webjars-bootstrap.version}/scss/</argument>
                    <argument>--no-source-map</argument>
                    <argument>--verbose</argument>
                    <argument>--trace</argument>
                    <!-- for more args, see https://stackoverflow.com/a/70228043/592355 // `sass` -->
                    <argument>${basedir}/src/main/scss/my.scss</argument>
                    <argument>/path/to/my/dest/my.css</argument>
                  </arguments>
                  <!-- more config, when we like ... -->
                </configuration>
              </plugin>
              <!-- this is not part of the answer, but unpacks us required scss: -->
              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                  <execution>
                    <id>unpack</id>
                    <!-- genererate-resources < process-resources  (i.e. prior)-->
                    <phase>generate-resources</phase>
                    <goals>
                      <goal>unpack</goal>
                    </goals>
                    <configuration>
                      <artifactItems>
                        <artifactItem>
                          <groupId>org.webjars.npm</groupId>
                          <artifactId>bootstrap</artifactId>
                          <version>${webjars-bootstrap.version}</version>
                        </artifactItem>
                      </artifactItems>
                      <outputDirectory>${project.build.directory}/webjars</outputDirectory>
                    </configuration>
                  </execution>
                </executions>
              </plugin>
            </plugins>
          </build>
        </profile>
        
      3. 最后:

        mvn process-resources -Pcss
        

        (假设没有测试,没有清理,没有编译,“它很安静,当一切正常时”)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-29
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多