npm 和 gulp - 如何在 gulp 中正确处理使用 npm 安装的模块

Ent*_*ain 3 frontend node.js npm gulp

我目前正在设置我的前端环境,无法弄清楚如何组合节点模块以正确使用 gulp。最初我想使用 bower,但是因为 bower 博客上什至推荐使用 yarn 我改变了主意。并且因为我的项目中已经使用了 nodejs,所以我来到了这个问题。

例如,如果我现在想安装 Bootstrap 4,我的代码段可能如下所示:

var gulp        = require('gulp');
var browserSync = require('browser-sync').create();
var sass        = require('gulp-sass');

// Compile sass into CSS & auto-inject into browsers
gulp.task('sass', function() {
    return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss', 'src/scss/*.scss'])
        .pipe(sass())
        .pipe(gulp.dest("src/css"))
        .pipe(browserSync.stream());
});

// Move the javascript files into our /src/js folder
gulp.task('js', function() {
    return gulp.src(['node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js', 'node_modules/tether/dist/js/tether.min.js'])
        .pipe(gulp.dest("src/js"))
        .pipe(browserSync.stream());
});
Run Code Online (Sandbox Code Playgroud)

我对这个片段的问题是,我必须检查我安装的每个模块所需文件的路径,并在多个地方更改 gulpfile。所以我的问题是,对于这个问题是否有更好/更简单的工作流程。

小智 5

不要包含完整路径,而是尝试提供文件的绝对路径,如下所示;这样,您无需为添加的每个新文件对 gulp 进行任何更改:

gulp.task('sass', function() {
  return gulp.src(
    ['node_modules/**/*.scss'],
    ['node_modules/**/*/.css'],
    {base:'node_modules'}
  )
  .pipe(sass())
  .pipe(gulp.dest("src/css"))
  .pipe(browserSync.stream());
});

gulp.task('js', function() {
  return gulp.src(
    ['node_modules/**/*.js'],
    ['node_modules/**/*/.min.js'],
    {base:'node_modules'}
  )
  .pipe(gulp.dest("src/js"))
  .pipe(browserSync.stream());
});

Run Code Online (Sandbox Code Playgroud)