Uncaught ReferenceError: require is not defined
gulp 压缩后希望可以在浏览器运行,这种要怎么修改呢?gulpfile.js 配置
const gulp = require('gulp');//引入gulp
const htmlMin = require('gulp-htmlmin');//引入html压缩模块
const autoprefixer = require('gulp-autoprefixer');
const cleanCss = require('gulp-clean-css') //引入css压缩模块
const babel = require('gulp-babel'), //引入es6转es5模块
uglify = require('gulp-uglify') //引入js压缩模块
const connect = require('gulp-connect');
const webserver = require('gulp-webserver');
const proxy = require('http-proxy-middleware');
const sass = require('gulp-sass')(require('sass'));
// 方便路径管理
const path = {
html: {
src: 'src/**/*.html',
dest: 'dist'
},
css: {
src: 'src/**/*.css',
dest: 'dist'
},
js: {
src: 'src/**/*.js',
dest: 'dist'
},
scss: {
src: 'src/**/*.scss',
dest: 'dist'
}
}
/**
* 创建任务,并命名任务名
* 一个*表示所有文件,两个*表示所有目录
*/
const htmlCompress = () => {
return gulp.src(path.html.src)
.pipe(htmlMin({
removeComments: true,//清除HTML注释
collapseWhitespace: true,//压缩HTML
collapseBooleanAttributes: true,//压缩布尔属性的值
removeEmptyAttributes: true,//删除所有空格作属性值
removeScriptTypeAttributes: false,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true //压缩页面css
})).pipe(gulp.dest(path.html.dest)) //指定压缩文件放置的目录
}
const scssCompile = () => {
return gulp.src(path.scss.src)
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest(path.scss.dest));
}
const cssCompress = () => {
return gulp.src(path.css.src)
推荐你用 Browserify。用 Browserify 和 Gulp 的示例配置:
先安装:
npm install --save-dev vinyl-source-stream vinyl-buffer browserify babelify
const gulp = require('gulp');
const htmlMin = require('gulp-htmlmin');
const autoprefixer = require('gulp-autoprefixer');
const cleanCss = require('gulp-clean-css');
const browserify = require('browserify');
const babelify = require('babelify');
const source = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');
const uglify = require('gulp-uglify');
const connect = require('gulp-connect');
const webserver = require('gulp-webserver');
const proxy = require('http-proxy-middleware');
const sass = require('gulp-sass')(require('sass'));
const path = {
html: {
src: 'src/**/*.html',
dest: 'dist'
},
css: {
src: 'src/**/*.css',
dest: 'dist'
},
js: {
src: 'src/**/*.js',
dest: 'dist'
},
scss: {
src: 'src/**/*.scss',
dest: 'dist'
}
};
const htmlCompress = () => {
return gulp.src(path.html.src)
.pipe(htmlMin({
removeComments: true,
collapseWhitespace: true,
collapseBooleanAttributes: true,
removeEmptyAttributes: true,
removeScriptTypeAttributes: false,
removeStyleLinkTypeAttributes: true,
minifyJS: true,
minifyCSS: true
}))
.pipe(gulp.dest(path.html.dest));
};
const scssCompile = () => {
return gulp.src(path.scss.src)
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest(path.scss.dest));
};
const cssCompress = () => {
return gulp.src(path.css.src)
.pipe(autoprefixer({
cascade: false
}))
.pipe(cleanCss())
.pipe(gulp.dest(path.css.dest));
};
const jsCompress = () => {
return browserify({
entries: './src/js/main.js', // 入口文件路径,根据你的实际情况进行修改
debug: true
})
.transform(babelify, {
presets: ['@babel/preset-env']
})
.bundle()
.pipe(source('output.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest(path.js.dest));
};
const watch = () => {
gulp.watch(path.html.src, htmlCompress);
gulp.watch(path.scss.src, scssCompile);
gulp.watch(path.css.src, cssCompress);
gulp.watch(path.js.src, jsCompress);
};
const createServer = () => {
return gulp.src('./dist')
.pipe(webserver({
port: '3000',
host: 'xx.xx.xx.xxx',
open: '/dark-rankings.html',
livereload: true,
middleware: [
proxy.createProxyMiddleware('/api', {
target: 'http://xxx.xxx.xxx.xx',
changeOrigin: true
})
]
}))
.pipe(connect.reload());
};
module.exports.default = gulp.series(
gulp.parallel(htmlCompress, scssCompile, cssCompress, jsCompress),
gulp.parallel(watch, createServer)
);
主要修改的部分加了 browserify 和 vinyl-source-stream :
const browserify = require('browserify');
const source = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');
修改了jsCompress 任务的内容:
const jsCompress = () => {
return browserify({
entries: './src/js/main.js', // 入口文件路径,
debug: true
})
.transform(babelify, {
presets: ['@babel/preset-env']
})
.bundle()
.pipe(source('output.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest(path.js.dest));
};