Найти тему

@bitrix/cli + stylus less

Оглавление

Если вы предпочитаете использовать при разработке stylus или less, которые по умолчанию не поддерживаются в @bitrix/cli , то можно легко добавить такую поддержку.

Речь идет об инструменте из оф. документации https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=105&LESSON_ID=12435&LESSON_PATH=9209.4776.3635.12435

Предполагаю что у вас уже установлен Node.js и npm. Примеры команд при разработке в Linux.

Установка @bitrix/cli

Библиотеку установим глобально, чтобы можно было использовать в разных проектах.

npm install -g @bitrix/cli

Создание расширения

Предположим что мы создаем расширение, которое будет храниться в директории /local/js/ и будет называться extension. Переходим в директорию и создаем решение

cd /home/bitrix/www/local/js
bitrix create extention
cd extention/

Посмотрим где мы находимся

pwd
# /home/bitrix/www/local/js/extention

Посмотрим список файлов в директории

ls -h
# bundle.config.js config.php dist lang src

Поддержка Stylus и Less

Находим где распологаются исходники бинарника bitrix

whereis bitrix
#bitrix: /home/bitrix/.nvm/versions/node/v14.18.3/bin/bitrix

Переходим в директорию и устанавливаем все пакеты для пересборки бинарника, а также пакеты stylus и less

cd /home/bitrix/.nvm/versions/node/v14.18.3/
cd lib/node_modules/@bitrix/cli/
pwd
# /home/bitrix/.nvm/versions/node/v14.18.3/lib/node_modules/@bitrix/cli
npm install
npm install stylus
npm install less

После успешной установки, находясь в той же директории, включаем отслеживание файлов *.styl и *.less, для этого редактируем файл src/tools/watch.js. Находим соответствующий кусов кода и дополняем его

function createPattern(directories) {
return directories.reduce((acc, dir) => {
const directory = new Directory(dir);
const directoryConfigs = directory.getConfigs();

directoryConfigs.forEach((currentConfig) => {
acc.push(slash(path.resolve(currentConfig.context, '**/*.js')));
acc.push(slash(path.resolve(currentConfig.context, '**/*.css')));
acc.push(slash(path.resolve(currentConfig.context, '**/*.scss')));

// добавляем эти 2 строки ниже
acc.push(slash(path.resolve(currentConfig.context, '**/*.styl')));
acc.push(slash(path.resolve(currentConfig.context, '**/*.less')));
});

return acc;
}, []);
}

Также правим файл src/utils/is-allowed.js

switch (ext) {
case '.js':
case '.jsx':
case '.css':
case '.scss':
// добавляем эти 2 строки ниже
case '.styl':
case '.less':
return true;
default:
return false;
}

Теперь пересобираем, находясь в той же папке

pwd
# /home/bitrix/.nvm/versions/node/v14.18.3/lib/node_modules/@bitrix/cli

npm run build

После сборки можно запускать сборку расширения с отслеживанием изменений в директории с расширением

pwd
# /home/bitrix/www/local/js/extention

bitrix build -w

Далее можно подключать stylus файлы