【问题标题】:How can I compile Bootstrap 4 scss with python webassets?如何使用 python webassets 编译 Bootstrap 4 scss?
【发布时间】:2018-03-18 11:58:31
【问题描述】:

我正在尝试使用 python webassets 简单地编译 Bootstrap 4,并且成功率为零。现在我只是尝试在 bootstrap/scss 目录中执行此操作,因此路径问题不是什么大问题。在此目录中,我添加了一个 main.scss 文件,其中包含一行:

@import "bootstrap.scss";

我有一个名为 test_scss.py 的脚本,看起来像这样:

from webassets import Bundle, Environment
my_env = Environment(directory='.', url='/')
css = Bundle('main.scss', filters='scss', output='all.css')
my_env.register('css_all', css)
print(my_env['css_all'].urls())

当我运行这个命令时,我得到如下错误跟踪:

Traceback (most recent call last):
  File "./test_scss.py", line 11, in <module>
    print(my_env['css_all'].urls())
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/bundle.py", line 806, in urls
    urls.extend(bundle._urls(new_ctx, extra_filters, *args, **kwargs))
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/bundle.py", line 765, in _urls
    *args, **kwargs)
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/bundle.py", line 619, in _build
    force, disable_cache=disable_cache, extra_filters=extra_filters)
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/bundle.py", line 543, in _merge_and_apply
    kwargs=item_data)
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/merge.py", line 276, in apply
    return self._wrap_cache(key, func)
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/merge.py", line 218, in _wrap_cache
    content = func().getvalue()
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/merge.py", line 251, in func
    getattr(filter, type)(data, out, **kwargs_final)
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/filter/sass.py", line 196, in input
    self._apply_sass(_in, out, os.path.dirname(source_path))
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/filter/sass.py", line 190, in _apply_sass
    return self.subprocess(args, out, _in, cwd=child_cwd)
  File "/Users/benlindsay/miniconda/lib/python3.6/site-packages/webassets/filter/__init__.py", line 527, in subprocess
    proc.returncode, stdout, stderr))
webassets.exceptions.FilterError: scss: subprocess returned a non-success result code: 65, stdout=b'',
stderr=b'DEPRECATION WARNING: Importing from the current working directory will
not be automatic in future versions of Sass.  To avoid future errors, you can add it
to your environment explicitly by setting `SASS_PATH=.`, by using the -I command
line option, or by changing your Sass configuration options.

Error: Invalid CSS after "...lor}: #{$value}": expected "{", was ";"
        on line 4 of /Users/benlindsay/scratch/python/webassets/test-2/bootstrap/scss/_root.scss
        from line 11 of /Users/benlindsay/scratch/python/webassets/test-2/bootstrap/scss/bootstrap.scss
        from line 1 of standard input
  Use --trace for backtrace.

如果我按照说明设置环境变量SASS_PATH=.,则会删除该部分错误消息,但我仍然会收到错误

Error: Invalid CSS after "...lor}: #{$value}": expected "{", was ";"
        on line 4 of /Users/benlindsay/scratch/python/webassets/test-2/bootstrap/scss/_root.scss
        from line 11 of /Users/benlindsay/scratch/python/webassets/test-2/bootstrap/scss/bootstrap.scss
        from line 1 of standard input
  Use --trace for backtrace.

我还不太了解 SCSS 语法,但我敢打赌这是我做错了什么,而不是 Bootstrap SCSS 中的错误。对我做错的任何想法将不胜感激。

【问题讨论】:

    标签: python sass


    【解决方案1】:

    事实证明,这实际上是 Bootstrap 端的一个问题。见https://github.com/sass/sass/issues/2383,特别是引用:

    这是我们实现中的一个错误——解析器不应该崩溃——但这些 Bootstrap 样式对于编写的 Sass 3.5 无效。

    无论如何,我只需要更新到最新版本的 Ruby Sass(显然是 webassets 模块所依赖的)并修复它。

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2017-01-04
      • 2021-07-29
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 2017-10-18
      相关资源
      最近更新 更多