フロントエンド構築ツールGulpの使用概要
8891 ワード
目次
1.why
2.環境構築
Windows環境nodeインストール、このチュートリアルを参照することができて、Linuxシステムは参照することができて、チュートリアルの1、チュートリアルの2
注意事項
nodeのダウンロード速度が遅すぎる場合は、国内のnodeダウンロードステーションを使用することも考えられます.
3.gulp
中国語公式サイト
入門ガイド
$ npm install --global gulp
$ npm install --save-dev gulp
var gulp = require('gulp');
gulp.task('default', function() {
//
});
$ gulp
4.gulpfile.jsファイル解析
let gulp = require('gulp'),
// html
htmlmin = require('gulp-htmlmin'), // html
// css
cleanCss = require('gulp-clean-css'), // css
// js
uglify = require('gulp-uglify'), // js
babel = require('gulp-babel'), // es6
eslint = require('gulp-eslint'), //
//
changed = require('gulp-changed'),
//
plumber = require('gulp-plumber'),
//
debug = require('gulp-debug'), // pipe
//
chalk = require('chalk'),
log = console.log, //
//
del = require('del'), //
//
runSequence = require('gulp-sequence'), //
//
browserSync = require('browser-sync').create(), // -
// pipe if
gulpif = require('gulp-if'),
//
minimist = require('minimist'),
// css
rev = require('gulp-rev'), // MD5
revCollector = require('gulp-rev-collector'); //
// Environment setup
/*
* env----
* gulp
* gulp---- (gulp --env 0)
* gulp
*
* gulp --env 0-----
*
* gulp gulp --env 0
*/
let knownOptions = {
string: 'env',
default: {env: process.env.NODE_ENV || '0'}
};
let options = minimist(process.argv.slice(2), knownOptions);
//web
let host = {
path: 'src/main/app/', //
build: 'src/main/webapp/', //
};
gulp.task('serve', () => {
browserSync.init({
proxy: 'http://192.168.0.103:8080',
serveStatic: [host.path],
browser: ['chrome'],
files: [
`${host.path}**/*.html`,
`${host.path}**/*.css`,
`${host.path}**/*.js`,
`${host.path}img/!**/!*.*`
],
});
});
//
gulp.task('lint', () => {
return gulp.src([host.path + 'js/**/*.js'])
.pipe(eslint({
configFile: '.eslintrc.js',
}))
.pipe(eslint.formatEach())
.pipe(eslint.results(results => {
log(chalk.gray(`Total Files: ${results.length}`));
log(chalk.redBright(`Total Errors: ${results.errorCount}`));
log(chalk.yellow(`Total Warnings: ${results.warningCount}`));
}))
});
//
const isFixed = (file) => {
return file.eslint !== null && file.eslint.fixed;
};
gulp.task('lint-fix', () => {
return gulp.src([host.path + 'js/**/*.js'])
.pipe(eslint({
fix: true,
}))
.pipe(gulpif(isFixed, gulp.dest(host.path + 'js')));
});
// html
let htmlOptions = {
removeComments: true, //
collapseWhitespace: true, // html
removeEmptyAttributes: false, // ==>
removeScriptTypeAttributes: false, // type="text/javascript"
minifyJS: true, // JS
minifyCSS: true, // css
};
gulp.task('html', () => {
return gulp.src(host.path + '**/*.html')
.pipe(plumber())
.pipe(changed(host.build))
.pipe(debug({title: ' :'}))
.pipe(htmlmin(htmlOptions))
.pipe(gulp.dest(host.build))
});
// css +
gulp.task('mincss', () => {
return gulp.src(host.path + 'css/*.*')
.pipe(plumber())
.pipe(debug({title: ' :'}))
.pipe(cleanCss()) //-
.pipe(rev()) //- MD5
.pipe(gulp.dest(host.build + 'css')) //-
.pipe(rev.manifest()) //- rev-manifest.json
.pipe(gulp.dest(host.build + 'css')); //- rev-manifest.json rev
});
// css
gulp.task('revcss', () => {
return gulp.src([host.build + 'css/*.json', host.build + '**/*.html']) //- rev-manifest.json css
.pipe(revCollector()) //- css
.pipe(gulp.dest(host.build)); //-
});
gulp.task('css', (cb) => runSequence(['mincss'], ['revcss'])(cb));
// js
gulp.task('babel', () => {
return gulp.src(host.path + '**/*.js')
.pipe(plumber())
.pipe(changed(host.build + 'js'))
.pipe(debug({title: ' :'}))
.pipe(babel({
presets: ['es2015']
}))
.pipe(gulp.dest(host.build + 'js'))
});
// js
gulp.task('js', () => {
return gulp.src(host.path + 'js/**/*.js')
.pipe(plumber())
.pipe(changed(host.build + 'js'))
.pipe(debug({title: ' :'}))
.pipe(babel({
presets: ['es2015']
}))
.pipe(uglify())
.pipe(gulp.dest(host.build + 'js'))
});
// configjs
gulp.task('configjs', () => {
return gulp.src(host.path + 'config.js')
.pipe(plumber())
.pipe(changed(host.build))
.pipe(debug({title: ' :'}))
.pipe(babel({
presets: ['es2015']
}))
.pipe(uglify())
.pipe(gulp.dest(host.build))
});
gulp.task('pageJs', (cb) => runSequence(['js'], ['configjs'])(cb));
// static
gulp.task('static', function () {
return gulp.src(host.path + 'static/**/*')
.pipe(plumber())
.pipe(changed(host.build + 'static'))
.pipe(debug({title: ' :'}))
.pipe(gulp.dest(host.build + 'static'))
});
//
gulp.task('img', () => {
return gulp.src(host.path + 'img/**/*')
.pipe(plumber())
.pipe(changed(host.build))
.pipe(gulp.dest(host.build + 'img'))
});
// json
gulp.task('json', () => {
return gulp.src(host.path + '**/*.json')
.pipe(changed(host.build))
.pipe(debug({title: ' :'}))
.pipe(gulp.dest(host.build))
});
//
gulp.task('other', () => {
return gulp.src([host.path + '*.html', host.path + '*.js'])
.pipe(plumber())
.pipe(changed(host.build))
.pipe(debug({title: ' :'}))
.pipe(gulp.dest(host.build))
});
//
gulp.task('clean', () => {
del(host.build + '/css');
del(host.build + '/js');
del(host.build + '/pages');
del(host.build + '/static');
del(host.build + '/img');
del(host.build + '/index.html');
del(host.build + '/login.html');
del(host.build + '/config.js');
del(host.build + '/*.json');
});
//
gulp.task('build', (cb) => runSequence(
['html'], ['css'], ['pageJs'], ['static'], ['img'],['json'],['other']
)(cb));
gulp.task('default', ['serve']);
/* */
gulp.task('h', () => {
log(chalk.yellow(''));
log(chalk.yellow(' : gulp gulp --env 0'));
log(chalk.yellow(' : gulp clean'));
log(chalk.yellow(' js : gulp lint'));
log(chalk.yellow(' js : gulp lint-fix'));
log(chalk.yellow(''));
});
</code></pre>
<h2>5. </h2>
<p> package.json gulpfile.js 。 </p>
<pre><code>npm install
</code></pre>
<h5> </h5>
<p> npm install , cnpm,(cnpm , Google)。</p>
<h5> :</h5>
<p> app ,build 。</p>
<pre><code>gulp // gulp default
</code></pre>
<h5> :</h5>
<pre><code>gulp clean
gulp build
</code></pre>
<p> , 。</p>
</article>
</div>
</div>
</div>
<!--PC WAP -->
<div id="SOHUCS" sid="1274665598214750208"></div>
<script type="text/javascript" src="/views/front/js/chanyan.js">