Использование зависимостей package.json в качестве структуры папок в gulpfile.js - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь создать автоматизированный процесс для включения узловых модулей в мои проекты. В некоторых модулях есть css, поэтому я пытаюсь сделать gulpfile.js таким образом, чтобы он мог читать эти модули и включать css этого модуля.

Я стараюсь быть избирательным, и у меня выбраны только папкичто я устанавливаю как зависимость. Не вся папка node_modules.

My gulpfile.js:

// Import (not showing all for the sake of the question)
const sourcemaps = require('gulp-sourcemaps');
const sass = require('gulp-sass');
const postcss = require('gulp-postcss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const fs = require('fs');
const json = JSON.parse(fs.readFileSync('./package.json'));

// File paths
const files = { 
    cssPath: 'assets/styles/**/*.scss',
    jsPath: 'assets/scripts/**/*.js',
    imgPath: 'assets/images/**/*',
    modulesPath: ['node_modules']+json.dependencies+'/**/*.scss'
    //Desired output: node_modules/module_name/all_folders/all.scss
}

// Compile CSS
function styles(){
    return src([files.cssPath, files.modulesPath])
        .pipe(sourcemaps.init())
        .pipe(sass())
        .pipe(postcss([ autoprefixer(), cssnano() ]))
        .pipe(sourcemaps.write('.'))
        .pipe(dest('dist/styles')
    );
}

Когда я запускаю "gulp styles", функция работает нормально, но нужные стили не включены. Что я делаю не так?

1 Ответ

1 голос
/ 31 октября 2019

Во-первых, есть более простой способ получить ваш package.json файл:

const package = require('./package.json');

Затем вам нужны имена ваших зависимостей, которые являются ключами в dependencies объекте. Сопоставьте их с глобусом, например:

const files = {
  ...
  modulesPath: Object.keys(package.dependencies).map(module => `node_modules/${module}/**/*.scss`)
}

Наконец, деструктурируйте этот массив в вашей styles задаче:

return src([files.cssPath, ...files.modulesPath])
...