我一直在使用Gulp一段時間。然後我被介紹給了Browserify。鑑於我正朝着React邁進,現在Webpack已經到來了。我離題...我可以通過Gulp + Browserify實現嗎?我需要Webpack嗎?
我想實現這些步驟:
require
前端的依賴,如jQuery和骨幹,在node
應用程序,以便有真理的來源之一 -npm
。- 將這些依賴關係(以我選擇的任何順序)連接到適合瀏覽器的
dependencies.js
文件(Browserify,對吧?)。 - 串連執行的匿名函數上述文件與我自己的JavaScript文件(不論爲了我選擇)成
all.min.js
文件,精縮,包裹在一個自我 -(function(){ /*all code here*/})()
- 以避免任何全局變量/變量窗口對象/全球污染。 (< - 這是關鍵)。
我希望能夠像我習慣的那樣,只用一口氣來處理這一切,但是整個全球性的污染事件正在殺死我。看看吞氣文件:
var gulp = require('gulp');
var concat = require('gulp-concat-util'); // Makes concat.header, concat.footer available.
var uglify = require('gulp-uglify');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
gulp.task('browserify', function() {
return browserify('libraries.js') // File containing a list of requires's.
.bundle()
.pipe(source('dependencies.js')) // Concatenated file.
.pipe(buffer())
.pipe(gulp.dest('./dev/dependencies')); // Destination directory.
});
gulp.task('scripts', function() {
return gulp.src([
'dev/dependencies/dependencies.js',
'dev/js/models/**/*.js', // Models before views & collections.
'dev/js/**/!(app|templates)*.js',
'dev/js/templates.js',
'dev/js/app.js'
])
.pipe(concat('all.min.js')) // Final file.
.pipe(concat.header('(function(){')) // Attempts to wrap in a SEAF.
.pipe(concat.footer('\n})();'))
.pipe(uglify())
.pipe(gulp.dest('public'));
});
所有的代碼確實會產生一個單一的文件,精縮,裹在SEAF,但我需要的庫(比如骨幹& jQuery的)仍然在全球訪問範圍。我的生活!這只是它的工作方式?這些庫都附在window
(我查看了代碼),但我想也許一些Browserify魔法可以解決這個問題。任何想法都很感激!
你是對的,我最終得到的唯一全局變量是第三方庫,比如Backbone&jQuery。但我希望最終得到一個乾淨的窗口對象,以便這些庫不能在瀏覽器中的控制檯中混淆。 –