所以今天是我第一天和jul一起玩gulp和grunt或任何任务跑步者。我到了一个地方,我可以在我的js文件中更改我的代码,然后运行
gulp browserify
这很好用。然而它很烦人,我想添加一个手表,以便当我对脚本进行任何更改时,它会自动运行浏览器浏览器或其他东西,我不必手动操作。所以这就是我对gulp.js的所作所为
var gulp = require('./gulp')({
});
gulp.task('watch', function() {
// Watch .js files
gulp.watch('jsfolder/**/*.js', ['scripts']);
});
gulp.task('release', ['build']);
gulp.task('build', ['scripts', 'browserify']);
gulp.task('default', ['watch']);
所以当我这样做时
gulp watch
当我保存更改时,它会给我
14:37:21] Starting 'clean'...
[14:37:21] Finished 'clean' after 3.18 ms
[14:37:21] Starting 'concat'...
[14:37:21] Finished 'concat' after 263 μs
[14:37:21] Starting 'checksum'...
[14:37:21] Finished 'checksum' after 19 ms
[14:37:21] Starting 'scripts'...
[14:37:21] Finished 'scripts' after 455 μs
[14:38:41] Starting 'clean'...
[14:38:41] Finished 'clean' after 2.9 ms
[14:38:41] Starting 'concat'...
[14:38:41] Finished 'concat' after 218 μs
[14:38:41] Starting 'checksum'...
[14:38:41] Finished 'checksum' after 18 ms
[14:38:41] Starting 'scripts'...
[14:38:41] Finished 'scripts' after 302 μs
但我的更改从未在页面上显示。我假设它只是观看而不是建设?我错过了什么?
修改
我添加了这个
gulp.watch('ui.id.go.com/public/**/*.js', ['scripts','browserify']);
但是现在它经常检查它,即使更新,我的机器CPU也开始了!那里有更好的想法吗?
感谢
答案 0 :(得分:1)
您应该使用Watchify和Browserify来观看文件更改,同时降低性能成本。当您的应用程序开始扩展时,您的代码库将花费很多时间进行捆绑,因为Browserify会重建每个文件,即使最新修改中只有一个文件发生了更改。
Watchify仅重建所需内容。初始构建(当您运行gulp任务时)与以前保持一致,但在每次更改时,您都会看到差异。
在 5578610字节 JavaScript应用程序中,初始构建需要 6.67s ,并且在文件更改时重建需要 ~400ms 。仅使用Browserify,每次更改都会有 6.67s 。
要开始使用,请安装NPM软件包:
npm install browserify watchify --save-dev
在gulpfile.js
:
var browserify = require('browserify');
var watchify = require('watchify');
初始化捆绑包(我正在使用Lodash _
作为商品)。 client.js
是此处的应用程序入口点:
var bundler = watchify(browserify(_.assign(watchify.args, {
entries: ['./src/client.js'],
debug: true
})));
bundler.on('log', gutil.log); // Output build logs to terminal using gulp-util.
然后使用Watchify创建bundle()
函数:
function bundle() {
return bundler.bundle()
// Log errors if they happen.
.on('error', gutil.log.bind(gutil, 'Browserify Error'))
.pipe(source('client.js'))
// Optional, remove if you don't need to buffer file contents.
.pipe(buffer())
// Optional, remove if you dont want sourcemaps.
// Loads map from Browserify file using gulp-sourcemaps.
.pipe(sourcemaps.init({loadMaps: true}))
// Add transformation tasks to the pipeline here.
.pipe(sourcemaps.write('./')) // Writes .map file.
.pipe(size(config.size)) // Checks output file size with gulp.size.
.pipe(gulp.dest('./build'));
}
最后,在存在依赖项更新时运行bundler:
gulp.task('scripts', bundle);
gulp.task('watch', ['scripts'], function() {
bundler.on('update', bundle); // On any dependency update, runs the bundler.
});
运行gulp watch
,您就可以开始工作了。
注意:您只应将入口点设置为捆绑器条目。 Browserify和依赖关系分支将负责其余部分,并且您不会两次构建相同的文件。
答案 1 :(得分:0)
对我来说问题是由于目录结构,看来gulp并没有很好地处理相对路径,至少在我的情况下。
我的项目设置如下:
/
project/
gulpfile.js
src/
app.js
build/
mybuiltfile.js
我最终将它全部移动到一个文件夹中,这解决了我的问题。