Как заменить устаревшую опцию javascriptEnabled в less-loader новым плагином - PullRequest
0 голосов
/ 11 октября 2019

Мне нужно использовать встроенные js для моих файлов меньшего размера, и ранее у меня была конфигурация webpack с чем-то вроде этого для включения встроенного js:

module.exports = {
  ...
  module: {
    ...
    rules: [
      ...
      {
        test: /\.less$/,
        use: [
          { loader: 'style-loader' },
          { loader: 'css-loader' },
          {
            loader: 'less-loader',
            options: { javascriptEnabled: true },
          },
        ],
      },
    ],
  },
};

Однако опция javascriptEnabled устарела и заменадля этого нужно использовать синтаксис @plugin и использовать плагин js. Тем не менее, меня немного смущает docs и то, как именно реализовать плагин, и какой плагин должен быть реализован в моей конфигурации webpack, чтобы заменить этот теперь устаревший параметр, чтобы я все еще мог использовать встроенный js. Как я могу сделать это? Спасибо.

1 Ответ

4 голосов
/ 14 октября 2019

Встроенный javascript устарел из соображений безопасности. Это было уязвимо для внедрения кода. Поэтому настоятельно рекомендуется не использовать встроенный javascript.

Вы можете использовать более старую версию до того, как javascriptEnabled устарела, если вы действительно хотите использовать ее так плохо, но я полагаю, что ответ будет слишком простым. Итак, вот что.

Я провел некоторое исследование, и я думаю, у вас появилась идея использовать plugins из этого вопроса . Я предполагаю, что автор здесь не хотел заменять javascriptEnabled с less-loader на плагин webpack для достижения аналогичного способа написания встроенного JavaScript. Я предполагаю, что он имел в виду, что каждый фрагмент встроенного javascript должен быть переписан как less plugin по соображениям безопасности.

Если вы подумаете об этом таким образом, docs внезапно приобретет больше смысла.

Вы можете заменить свой встроенный javascript другим Less plugins, как показано в предоставленных вами документах:

// my-plugin.js
install: function(less, pluginManager, functions) {
    functions.add('pi', function() {
        return Math.PI;
    });
}
// etc

Если бы вы использовали это в своей таблице стилей:

@plugin "my-plugin";
.show-me-pi {
  value: pi();
}

Вы получите:

.show-me-pi {
  value: 3.141592653589793;
}
...