【问题标题】:Getting sass to work with grunt让 sass 与 grunt 一起工作
【发布时间】:2013-06-21 11:22:43
【问题描述】:

我正在尝试让 sass 与 grunt 一起工作,但有一些事情不是很清楚,即使在阅读了文档之后也是如此。

在我的 gruntfile 中有:

  grunt.loadNpmTasks('grunt-contrib-sass');

  compass: {
    files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
    tasks: ['compass']
  },

  grunt.registerTask('default', ['sass']);

我的问题是我应该在我的样式文件夹和我的 html 文件中创建 scss 或 css 文件,我应该链接到 css 或 scss 文件吗? 另外,如果我有大量的样式文件,我应该总是手动包含它们中的每一个,还是有更简单的方法,比如在 rails 中,样式文件夹中的每个文件都是自动添加的?

编辑

This is what my project structure looks like,我对默认 yeoman angular 应用程序所做的唯一更改是添加了我试图将其转换为常规 css 的 random.scss 文件。

【问题讨论】:

    标签: css sass gruntjs


    【解决方案1】:

    您的配置有点错误,将 compass 与 sass 混合在一起。看看那个配置:https://github.com/gruntjs/grunt-contrib-watch#examples

    当然,您创建编译为 css 的 sass 或 scss 文件。这就是 sass 的用途。在您的 html 中,您包含最终编译的 css 文件。您可以使用像 assetpush 这样的插件,它可以从编译的 css 文件中生成文件中的 html。配置可能如下所示:

    grunt.initConfig({
      sass: {
        compile: {
          files: {
            '<%= yeoman.app %>/styles/main.css': ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}']
          }
        }
      },
      assetpush: {
        css: {
            files: {
                "path/to/your.html": ["css/*.css"]
            }
        }
      }
    });
    
    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-assetpush');
    
    grunt.registerTask('default', ['sass', 'assetpush']);
    

    【讨论】:

    • 所以如果我理解正确的话,我的 main.css 文件应该包含同一目录中所有其他 scss 文件的编译代码吗?我刚试过你的代码,但我的 main.css 文件仍然是空的......(而且我还没有使用assetpush)
    • 留意路径,我添加了 /main/ 以显示如何添加更多路径和文件的可能性。您可能只是复制/粘贴了我的代码和路径;-)
    • 我删除了main 并重新启动了服务器,但仍然没有任何变化,main.css 仍然是空的。另外,不知道你为什么被否决..
    • 但 main.css 已创建,到目前为止还不错。您能否在您的问题中向我们展示您当前的目录结构?尤其是您的 sass 文件所在的位置以及一些示例
    • 在您的屏幕截图中您可以看到,main.css 是在您的项目根目录中生成的。该文件不应该为空;-)当然你应该修复路径。我编辑我的答案
    猜你喜欢
    • 2016-03-01
    • 1970-01-01
    • 2017-01-20
    • 2016-02-07
    • 2014-12-18
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多