Включить встроенный javascript в LESS

Я хотел бы использовать inline js в моих меньших файлах, но я получаю следующее сообщение:

Встроенный JavaScript не включен. Установлен ли он в ваших настройках?

Как включить это?

Ответ 1

У меня была такая же проблема, я использую webpack с меньшим загрузчиком, мне нужно добавить параметр javascript в конфигурацию меньше loader:

{
        test: /\.less$/,
        use: [{
            loader: "style-loader"
        }, {
            loader: "css-loader"
        }, {
            loader: "less-loader",
            options: {
                javascriptEnabled: true
            }
        }]
}

Я нашел в исходном коде меньше компилятора: https://github.com/less/less.js/blob/3.x/bin/lessc

что они разобрали js меньше опции таким образом:

        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;

Поэтому вы должны использовать '-js' в статической компиляции (командной строке) или 'javascriptEnabled: true' в динамической компиляции (например, загрузчик веб-пакетов), чтобы включить javascript.

Ответ 2

Встроенный JavaScript был отключен по умолчанию из соображений безопасности. Дело в том, что онлайн-генераторы иногда допускают настройку переменных Less, которые они затем интерпретируют напрямую.

Это было уязвимо для внедрения кода, что означало, что JavaScript мог быть внедрен в таблицу стилей Less, которая запускалась непосредственно на сервере.

По этой причине встроенный JavaScript был объявлен устаревшим (по умолчанию в 3.x установлено значение false), и заменой этого является синтаксис @plugin и использование подходящего плагина JS. - (См.: http://lesscss.org/features/#plugin-atrules-feature)

Да, вы все равно можете установить параметры компиляции на javascriptEnabled: true, но это не считается лучшей практикой для таблиц стилей. В общем, ваша таблица стилей не должна содержать JS. Лучше использовать плагин.

Ответ 3

У меня возникла эта проблема при использовании самой последней версии. Затем я переключился на версию 2.7, и я исправил ее.

Ответ 4

Да, ко всему, что сказали @Мэтью-Дин и @Дэвид-Карпини... но для всех, кто ищет фрагмент кода Grunt-LESS, вы идете:

  less: {
      dev: {
          options: {
              paths: ['Content/less'],
              plugins: [
                  new(require('less-plugin-autoprefix'))({
                      browsers: ['last 2 versions']
                  }),
                  new(require('less-plugin-clean-css'))({
                      sourceMap: true,
                      advanced: true
                  })
              ],
              relativeUrls: true,
              javascriptEnabled: true
          },
          files: {
              'Content/less/site.css': 'Content/less/site.less'
          }
      }
  },

это работает для моей реализации с использованием "grunt-contrib-less": "^2.0.0"... ваш пробег может отличаться

Ответ 5

Я пришел сюда, чтобы найти: "Встроенный JavaScript не включен. Установлен ли он в ваших настройках? У меня было это:

Inline JavaScript is not enabled. Is it set in your options?
  in uikit/src/less/components/text.less (line 49, column 4) ERROR in ./src/styles.less

Ошибка сборки модуля: ModuleBuildError: сбой сборки модуля:...

Я пошел в строку 49 в uikit/src/less/components/text.less и дважды слэш его (крючок).

Кстати, перед тем, как поработать с "Inline JavaScript", мне пришлось адаптировать эту функцию:

//UIkit, правильные /ajust функции для Less // Функция Adapte rgba UIkit для Less - range 0 < > 1

.rgbaColorIn(@color, @opacity : 1) {
  @result: rgba(red(@color), green(@color), blue(@color), @opacity)}

//Функция Adapte затемняет UIkit для меньшего диапазона 0 < > 100%

.dark(@color, @pct) {darken(red(@color), green(@color), blue(@color), @pct)}

//Адаптация функции fade d'UIkit pour Less - range 0 < > 100%

.or-fade(@color, @pct) {fade(red(@color), green(@color), blue(@color), @pct)}

[Angular6 и UIkit-3-rc]