繁体   English   中英

Gulp创建dist文件夹,但不生成文件(无错误)

[英]Gulp creates dist folder but doesn't generate files (without errors)

我是使用node,ejs和gulp的新手,我的项目结构如下:

public
   css
     style.scss
   js
   images
views
   components
     navbar.ejs
   index.ejs
gulpfile.js
server.js

我尝试了这个gulpfile.js:

const { src, dest, watch, series, parallel } = require('gulp');

const sourcemaps = require('gulp-sourcemaps');
var ejs = require("gulp-ejs");
const sass = require('gulp-sass');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const postcss = require('gulp-postcss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
var replace = require('gulp-replace');


// File paths
const files = {
    scssPath: 'puclic/css/**/*.scss',
    jsPath: 'public/js/**/*.js',
    ejsPath: 'views/*.ejs'
}


function scssTask() {
    return src(files.scssPath)
        .pipe(sourcemaps.init()) // initialize sourcemaps first
        .pipe(sass()) // compile SCSS to CSS
        .pipe(postcss([autoprefixer(), cssnano()])) // PostCSS plugins
        .pipe(sourcemaps.write('.')) // write sourcemaps file in current directory
        .pipe(dest('dist')); // put final CSS in dist folder
}


function jsTask() {
    return src([
            files.jsPath
            //,'!' + 'includes/js/jquery.min.js', // to exclude any specific files
        ])
        .pipe(concat('all.js'))
        .pipe(uglify())
        .pipe(dest('dist'));
}

function ejsTask() {
    return src(files.ejsPath)
    .pipe(ejs({}, {ext: '.html'}))
    .pipe(dest('dist'))
}


function watchTask() {
    watch([files.scssPath, files.jsPath, files.ejsPath],
        parallel(scssTask, jsTask, ejsTask));
}


exports.default = series(
    parallel(scssTask, jsTask, ejsTask),
    watchTask
);

我想用'index.html'而不是'index.ejs','style.css'而不是'style.scss'和缩小的js生成dist文件夹。

当我运行gulp时,它将启动并完成任务并开始观看。 创建了一个dist文件夹,但在其中仅得到一个index.ejs文件,除此之外没有其他文件。

Gulp没有显示任何错误。

节点v10.14; npm v6.7; gulp cli v2.2; gulp本地v4.0

当我评论您的帖子时,之所以不起作用,是因为您的scssPath中有错字。

scssPath: 'puclic/css/**/*.scss',更改为scssPath: 'public/css/**/*.scss',

将解决错误。

对于您的.ejs问题,您正在滥用其选项(假设您使用的是gulp-ejs v4)。 你有

.pipe(ejs({}, {ext: '.html'}))

但是请参阅重命名文件扩展名

从版本4开始,删除了第三个api参数设置。 您无法再提供扩展程序。 这是因为它不在gulp-ejs的范围内。 因此,如果您需要使用其他扩展名保存文件,则可以使用gulp-rename。

这是一个具有.ejs扩展名的模板文件的示例,该文件呈现为.html文件:

const ejs = require('gulp-ejs')
const rename = require('gulp-rename')

gulp.src('./templates/*.ejs')
  .pipe(ejs({ title: 'gulp-ejs' }))
  .pipe(rename({ extname: '.html' }))
  .pipe(gulp.dest('./dist'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM