Связать модуль Bootstrap со встроенным в Wordpress jQuery?

Я пытаюсь создать собственный сайт начальной загрузки (версия 4) на WordPress, используя npm и gulp, но поскольку для начальной загрузки требуется jquery, я продолжал получать эту ошибку при попытке запустить gulp:

Error: Cannot find module 'jquery'

Я установил popper а также bootstrap используя gulp и добавили следующие строки в мой gulpfile.js:

var gulp = require('gulp');
var sass = require('gulp-sass');
var popperjs = require('popper.js');
var bootstrap = require('bootstrap');

gulp.task('sass', function(){
    return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss', './sass/**/*.scss'])
    .pipe(sass())
    .pipe(gulp.dest('./'))
});

gulp.task('js', function(){
    return gulp.src(['node_modules/popper.js/dist/popper.min.js', 'node_modules/bootstrap/dist/js/bootstrap.min.js', './js/*.js'])
    .pipe(gulp.dest('./js'))
});

gulp.task('watch', function(){
    gulp.watch('./sass/**/*.scss', ['sass']);
    gulp.watch('./js/*.js', ['js']);
});

gulp.task('default', ['sass', 'js', 'watch']);

Сначала я попытался установить jQuery через npm, что вызвало другую ошибку ( Использование npm для установки jquery & bootstrap4 возвращает ошибку неопределенного свойства), но потом я вспомнил, что Wordpress имеет jQuery, включенный в cms, поэтому я удалил установленный npm jQuery и попытался выяснить, как использовать WordPress JQuery вместо.

Итак, tldr: как связать мой модуль Bootstrap со встроенным в Wordpress jQuery

/wp-include/js/jquery.js

1 ответ

Чтобы включить один или несколько внешних js-сценариев с gulp, попробуйте gulp-concat вместе с "gulp-environment", чтобы удовлетворить потребности вашей среды.

var gulp = require('gulp'),
    path = require('path'),
    concat = require('gulp-concat'),
    environments = require('gulp-environments'),
    development = environments.development,
    production = environments.production,
    dev = environments.make("dev"),
    prod = environments.make("prod"),
///other imports///

// set paths to files to be concatenated

var config = {
    jsConcatFiles: [
        './src/scripts/js/concat/jquery.js',
        './src/scripts/js/concat/bootstrap.js',
        './src/scripts/js/concat/popper.js'
    ],
};

// set src build files
var src = {
  jsmin:'./src/scripts/js/min/**/*.js',
  jssp:'./src/scripts/js/sp_js/**/*.js',
  jsspcon:'./src/scripts/js/concat/**/*.js',

};
// set destination paths
var dest = {
  maps:'../maps',
  js:'./public_html/scripts/js/',
  jsmin:'./src/scripts/js/min/',
  jssp:'./src/scripts/js/sp_js/',
  jsspcon:'./src/scripts/js/concatonated/',

};
// ////////////////////////////////////////////////
// Scripts Tasks
// ///////////////////////////////////////////////

// check if files are new / copy 
gulp.task('scripts:copy',['scripts:copymin'], function(cb){
    return gulp.src(src.jssp)
    .pipe(newer(dest.js))
    .pipe(gulp.dest(dest.js),cb)

});

// copy min file (production)
gulp.task('scripts:copymin',['scripts:concat'], function(cb){
    return gulp.src(src.jsmin)
    .pipe(newer(dest.js))
    .pipe(gulp.dest(dest.js),cb)

});

// collect all the files required 
// dev: maps / expand code / reload
// prod: minify / rename

gulp.task('scripts:concat', function(cb) {
  return gulp.src(config.jsConcatFiles)
  // this will only init sourcemaps in development
    .pipe(dev(sourcemaps.init()))
    .pipe(concat('sp_all.js'))
    .pipe(gulp.dest(dest.jsspcon))
    .pipe(rename({suffix: '.min'}))
    // only minify the compiled JS in production mode
    .pipe(prod(uglify()))
    .pipe(dev(sourcemaps.write(dest.maps)))
    .pipe(gulp.dest(dest.jsmin),cb)
    .pipe(reload({stream:true}));
});
gulp.task('scripts', ['scripts:copy'])
Другие вопросы по тегам