LESS importing CSS and relative paths

后端 未结 4 571
别跟我提以往
别跟我提以往 2021-01-03 23:25

I am using LESS to organize and import all my CSS files. I am also using Twitter Bootstrap which I integrated inside my style.less. It works fine like below however when I u

相关标签:
4条回答
  • 2021-01-04 00:02

    i just had this problem and solved it. the solution is to prepend ../ to the path of the style sheet that you want to import until it finds it. look here :

    then i added ../ multiple times until i escaped to the wanted directory and it worked

    0 讨论(0)
  • 2021-01-04 00:11

    When running lessc use the --relative-urls flag.

    lessc --relative-urls
    

    It's poorly documented, but by default it is false which means that all @imported files will maintain their urls (e.g. background-image, font-face, etc) as they are. This is because less was already doing this and many users expect it to leave their urls alone.

    When the relative-urls flag is used, lessc rewrites all of the urls according to the location of the less/css file being imported.

    Example

    /dir1/style/main.less

    // if you don't include (less) lessc will leave bootstrap
    //   as an @import at the top of the lessified css file
    @import (less) '../bootstrap/bootstrap.min.css';
    

    /dir1/lib/bootstrap/bootstrap.min.css

    background-image:url("../img/bs-img.gif");
    

    Result:

    /dir1/style/main.css

    background-image:url("../bootstrap/img/bs-img.gif");
    
    0 讨论(0)
  • 2021-01-04 00:13

    Check out the docs for command line usage. https://github.com/cloudhead/less.js/wiki/Command-Line-Usage. There's an option called --root-path that will prepend existing urls so that they will work in the output css file.

    lessc [option option=parameter ...] <source> [destination]
    
    lessc -rp=will/be/prepended sourcefile.less path/to/destination
    

    For example:

    Here is the original url, with the file in css/src/nest

    background-image: url('../../../imgs/bg.png');
    

    And this is what I would do on the command line. Note that the -rp argument should point from the output directory to the original file location

    lessc -rp=src/nest css/src/nest/nesty.less css/nesty.less
    

    And the output, with the file in css/

      background-image:url('src/nest/../../../imgs/bg.png')
    

    There is a --relative-urls option, but I can't get it to work. I'm working build script that uses the workaround I described above. Build-o-Matic

    This is how I handled determining the path [link]

    0 讨论(0)
  • 2021-01-04 00:14

    --relative-urls flag has its in-browser counterpart.

    <script>
    less = {
        env: "development",
        relativeUrls: true
    };
    </script>
    <script src="less.min.js"></script>
    
    0 讨论(0)
提交回复
热议问题