从webpack传递较少的变量

Boa*_*and 5 javascript less webpack

我试图将webpack配置中较少的变量传递给较少的加载器,当然.由于某种原因,变量没有被传递好.我无法弄清楚正确的语法.

该变量具有在构建时在webpack配置文件中确定的动态内容.这是相关的一行(我尝试了很多变化):

loader: 'style!css?-minimize!less?-minimize&{modifyVars:{"resources-path-prefix":"' + pathPrefix + '"}}'
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,一些pathPrefix正在构建时确定,我们希望将其值传递给较少的上下文,其中它将在url()css指令中使用.

以上操作无效 - 没有任何内容传递给less,并且less中定义的默认变量值适用.

任何人都可以展示如何正确地将值传递给较少的编译过程?谢谢!

Boa*_*and 10

所以这很艰难,但我们终于让它发挥作用了(!).Arggh - 花了很多时间来尝试和弄清楚语法.

这是任务:我们希望在构建时确定一个路径,该路径应该用作较少文件中misc资产的基本URL(背景图像,使用url()less函数).

首先,我们确定了webpack配置文件中的路径.它简单的JS,但路径字符串的转义模式绝对是疯了.我们可能只投入了数小时.很棒.这里是:

var assetsPath = (someCondition) ? '/assets' : "\\/127.0.0.1:8080/assets";
Run Code Online (Sandbox Code Playgroud)

接下来是使用上面设置的assetsPath前缀的较少文件的加载程序配置:

{
    test: /\.less$/,
    exclude: /node_modules/,
    loader: 'style!css?minimize=false!less?{"modifyVars":{"assetspath":"\'' + assetsPath +'\'"}}'
}
Run Code Online (Sandbox Code Playgroud)

注意上面的转义模式在loader配置中使用assetsPath.

接下来,您需要确保在less文件中定义了一个空变量.我们在'vars.less'文件中初始化它,包括:

@assetspath: '';
Run Code Online (Sandbox Code Playgroud)

最后,在任何相关的类中,我们可以使用在构建时间中传递的值,如下所示:

background-image: url("@{assetspath}/images/facebook.png");
Run Code Online (Sandbox Code Playgroud)


Nea*_*eal 5

您可以尝试使用query加载器的部分:

    loader: 'style!css?-minimize!less?-minimize',
    query: {
        modifyVars: {
           "resources-path-prefix": pathPrefix
        } 
    }
Run Code Online (Sandbox Code Playgroud)