如何在 Gulp 中使用 Webpack 将文件输出到其源目录的父目录
How to output files to the parent of their source directory using Webpack in Gulp?
到目前为止,我有这段代码,我从这里得到:
var gulp = require('gulp');
var webpack = require('webpack-stream');
var named = require('vinyl-named');
gulp.task('default', function() {
return gulp.src('*/lib/app.js', { base: '.' })
.pipe(named())
.pipe(webpack())
.pipe(gulp.dest('.'));
});
我的文件夹结构是这样的:
site1/lib/app.js
site2/lib/app.js
我想创建如下所示的输出文件,每个文件仅包含其各自的 lib/app.js 文件的代码(以及其中的任何 require()):
site1/app.js
site2/app.js
但是,我现在拥有的代码只是输出到项目的根目录。我已经尝试了几种组合,例如 删除{ base: '.' }
,但没有任何效果。但是,如果我删除named()
并webpack()
管道,则当前代码实际上输出到正确的目录。因此,在此过程中,似乎Webpack丢失了原始目录信息?
此外,有可能获得一个也适用于 Webpack 的"watch: true"选项的解决方案,以便快速编译修改后的文件,而不是使用 Gulp 在每次文件更改时始终遍历每个文件?
我假设您想为每个站点创建一个仅包含该站点代码(而不是其他站点)的app.js
。
在这种情况下,您可以使用gulp-foreach
有效地循环访问所有app.js
文件,并将每个文件发送到其自己的流中。然后,您可以使用 node.js 内置的 path
模块来确定每个app.js
文件的父目录在哪里,并使用 gulp.dest()
将其写入其中。
var gulp = require('gulp');
var webpack = require('webpack-stream');
var named = require('vinyl-named');
var foreach = require('gulp-foreach');
var path = require('path');
gulp.task('default', function() {
return gulp.src('*/lib/app.js')
.pipe(foreach(function(stream, file) {
var parentDir = path.dirname(path.dirname(file.path));
return stream
.pipe(named())
.pipe(webpack())
.pipe(gulp.dest(parentDir));
}));
});
如果你想使用webpack({watch:true})
你必须使用不同的方法。下面使用 glob
循环访问所有app.js
文件。每个app.js
文件再次沿其自己的流发送,但是这次所有流在返回之前都已合并。
var gulp = require('gulp');
var webpack = require('webpack-stream');
var named = require('vinyl-named');
var path = require('path');
var merge = require('merge-stream');
var glob = require('glob');
gulp.task('default', function() {
return merge.apply(null, glob.sync('*/lib/app.js').map(function(file) {
var parentDir = path.dirname(path.dirname(file));
return gulp.src(file)
.pipe(named())
.pipe(webpack({watch:true}))
.pipe(gulp.dest(parentDir));
}));
});
相关文章:
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- Php在csv输出文件中插入转义字符
- 使用grunt将版本号动态添加到dest输出文件中
- 如何将时间戳注释添加到我的输出文件中
- Browserify生成一个*巨大的*输出文件
- NetBeans IDE CoffeeScript 将 UTF-8 BOM 添加到输出文件中
- 如何使用 html5 输入本地文件并在屏幕上输出文件
- Webpack 输出文件
- 分别设置输出文件夹和文件 url;带有 Django 的 Webpack 文件加载器
- 使用express和react清空wepback输出文件
- Webpack-没有输出文件,没有报告错误
- 输出文件中的换行符
- 字符串操作&PDF输出文件
- 如何缩小和模糊多个js文件与多个输出文件的依赖关系
- 有没有办法设置智能/动态'joinTo'Brunch中的输出文件
- Webpack不创建输出文件(不使用Webpack开发服务器)
- Webpack不生成输出文件
- react-hot-loader的webpack输出文件到哪里去了?
- 如何在与退出目录相同的目录中设置HTML和输出文件
- 如何在typescript文件位于'./src'时构建输出文件夹