html-webpack-plugin (मैं लेखक हूँ) एक उत्पन्न करेगा: संदर्भ का एक सा के लिए भी
var util = require('util');
var path = require('path');
var gulp = require('gulp');
var runSequence = require('run-sequence');
var rimraf = require('rimraf');
var gzip = require('gulp-gzip');
var notify = require('gulp-notify');
var gutil = require('gulp-util');
var webpack = require('webpack');
var webpackConfig = require('./client/webpack.config');
var through2 = require('through2');
gulp.task("webpack", function (cb) {
webpack(webpackConfig, function (err, stats) {
if (err) throw new gutil.PluginError("webpack", err);
var jsFilename = stats.toJson().assetsByChunkName['app'];
console.log('>>>>', jsFilename);
// if source-maps are turned on, you'll get [ 'somefile.js', 'somefile.js.map' ]
if (util.isArray(jsFilename)) {
jsFilename = jsFilename.filter(function (filename) {
return path.extname(filename).toLowerCase() === '.js'
}).shift();
}
// write the hashed main.js to /dist/index.html
gulp.src('./client/index.html')
.on('error', handleErrors)
.pipe(through2.obj(function (vinylFile, enc, tCb) {
vinylFile.contents = new Buffer(String(vinylFile.contents)
.replace('main.js', jsFilename));
this.push(vinylFile);
tCb();
}))
.pipe(gulp.dest('./dist/'));
cb();
});
});
function handleErrors() {
var args = Array.prototype.slice.call(arguments);
notify.onError({ title: 'Error', message: '<%= error.message %>'}).apply(this, args);
this.emit('end');
}
gulp.task('gzip-deploy', function() {
return gulp.src('./dist/**/*')
.on('error', handleErrors)
.pipe(gzip())
.pipe(gulp.dest('./dist/'));
});
gulp.task('clean', function (cb) {
return rimraf('./dist', cb);
});
gulp.task('default', function (cb) {
runSequence('clean', 'webpack', cb);
});
gulp.task('deploy', function (cb) {
webpackConfig.plugins = webpackConfig.plugins = [
new webpack.optimize.UglifyJsPlugin(),
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production")
}
})
];
webpackConfig.watch = false;
webpackConfig.devtool = null;
webpackConfig.output.filename = "main-[hash].js";
runSequence('clean', 'webpack', 'gzip-deploy', cb);
});
यहाँ मेरी webpack.config.js
फ़ाइल है: यहाँ एक gulpfile स्निपेट होता है, साथ ही साथ एक सा मदद कर सकता है है index.html सही हैश बंडल फ़ाइल नाम का संदर्भ देने के लिए।
var HtmlWebpackPlugin = require("html-webpack-plugin");
var webpackConfig = {
entry: "index.js",
output: {
path: "build/",
filename: "index-[hash].js",
},
plugins: [new HtmlWebpackPlugin()]
}
यह build/index.html
कि एक <script>
टैग के साथ अपने बंडल में शामिल हैं का उत्पादन करेगा।
स्रोत
2014-08-13 23:33:07
बहुत बढ़िया प्लग-इन मैन। – Max
अरे, वास्तव में, भयानक प्लगइन। क्या कोई नया ".html" फ़ाइल बनाने के बिना और "ब्लूंप टेम्पलेट" का उपयोग किए बिना इसका उपयोग करने का कोई विकल्प है? मेरे पास एक मौजूदा HTML फ़ाइल है जिसे मैं –
अपडेट करना चाहता हूं, मुझे यकीन नहीं है कि यह अप्रैल में एक विकल्प था जब आपने पिछली बार टिप्पणी की थी, लेकिन ऐसा लगता है कि 6 महीने बाद, विकल्प 'टेम्पलेट' हैं (एक मौजूदा टेम्पलेट प्राप्त करता है फ़ाइल नाम) और 'टेम्पलेट सामग्री' (सीधे HTML की एक स्ट्रिंग जोड़ें)। मैं, वैसे, भयानक प्लगइन से सहमत हूं। – trysis