在LESS中启用内联javascript

pha*_*nce 17 javascript less npm laravel-mix

我想在我的较少文件中使用内联js,但我收到以下消息:

内联JavaScript未启用.它是否设置在您的选项中?

我怎样才能启用它?

Dav*_*ini 38

我有同样的问题,我使用webpack少加载器,我需要在较少的加载器配置中添加javascript选项:

{
        test: /\.less$/,
        use: [{
            loader: "style-loader"
        }, {
            loader: "css-loader"
        }, {
            loader: "less-loader",
            options: {
                javascriptEnabled: true
            }
        }]
}
Run Code Online (Sandbox Code Playgroud)

我发现在较少编译器的源代码中:https://github.com/less/less.js/blob/3.x/bin/lessc

他们以这种方式解析js less选项:

        case 'js':
            options.javascriptEnabled = true;
            break;
        case 'no-js':
            console.error('The "--no-js" argument is deprecated, as inline JavaScript ' + 
                'is disabled by default. Use "--js" to enable inline JavaScript (not recommended).');
            break;
Run Code Online (Sandbox Code Playgroud)

所以你应该在动态编译(如webpack loader)中使用静态编译(命令行)中的'--js'或'javascriptEnabled:true'来启用javascript.


Ctr*_*rlX 17

只是为了更新接受的答案,

从 3.11.1 开始,如果你只使用options,它会抛出:

ValidationError: 无效的选项对象。Less Loader 已使用与 API 架构不匹配的选项对象进行初始化。- 选项具有未知属性“javascriptEnabled”。这些属性是有效的:object {lessOptions?, prependData?, appendData?, sourceMap?, implementation? }

less@3.11.1 中,不仅options应该使用它,而且lessOptions像这样:

{
    test: /\.less$/,
    use: [{
        loader: "style-loader"
    }, {
        loader: "css-loader"
    }, {
        loader: "less-loader",
        options: {
          lessOptions: {
             javascriptEnabled: true
          }
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*ech 9

更新时间:2020 年 5 月

对于less-loader版本6.1.0^

在“less-loader”版本 6.1.0^ 中,他们对加载器进行了重大更改,如果您使用 Ant Design(或其他 LESS 和 JS 加载器)之类的东西,通常会将 javascriptEnabled: true 标志添加到“options”对象在您的 Webpack 配置中。

在 6.1.0^ 版本中,这被更改为放置在 lessOptions 对象中的 less 加载程序的选项配置下。这是我使用的解决方案,适用于我的 Webpack 配置包。

module: { rules: [{
    test: /\.less$/,
    use: [
        { loader: "style-loader" },
        { loader: "css-loader" },
        {
            loader: "less-loader",
            options: {
                lessOptions: {
                    javascriptEnabled: true,
                }
            }
        }
    ]
}]}
Run Code Online (Sandbox Code Playgroud)

请注意,javascriptEnabled 标志不在顶级选项对象下,而是在lessOptions 子对象下。这是 less-loader 版本 6.1.0^ 的最新更新标准。


Ben*_*ing 6

如果您使用的是lessccli 界面,那么您只需要--js在最后。

lessc --js ./styles/theme.less ./styles/theme.css
Run Code Online (Sandbox Code Playgroud)