我正在使用Gulp js-beautify来拯救JavaScript。
我无法使用gulp.src
和gulp.dest
管道。它给出了错误
dest.on('unpipe', onunpipe);
所以我使用了以下代码并实现了我想要的结果。
gulp.task("jsbeautify", function () {
const fs = require('fs');
gulp.watch(config.srcTest).on("change", function (file) {
console.log("Updating file");
const destPath = file.path.replace(/\/[^/]*.js/g, " ");
const fileContent = fs.readFileSync(file.path, "utf8");
fs.writeFileSync(file.path, jsBeautify(fileContent, {indent_size: 2}));
});
});
js-beautify中的文档没有提供修改或写入文件的示例。所以我使用了fs
。
有更好的方法吗?也许在管道中使用gulp.src
。
答案 0 :(得分:2)
无论你想用gulp做什么,都可能已经做得很好。
使用js-beautify gulp-jsbeautify包来美化{<3}}。
要modify files in place using gulp,请在致电base
时设置gulp.src
选项,并使用./
作为目的地。
var gulp = require('gulp');
var prettify = require('gulp-jsbeautifier');
gulp.task('prettify', function() {
return gulp.src(config.srcTest, {base: "./"})
.pipe(prettify())
.pipe(gulp.dest('./'));
});
gulp.task('watch', function() {
gulp.watch(config.srcTest, ['prettify']);
});
然后调用gulp watch
将启动观察者。
&#34;美化选项&#34;是使用相同的下划线选项 JS-美化。请参阅js-beautify文档以获取其列表。
所有&#34;美化选项&#34;放在根目录中,应用于CSS,HTML和JavaScript,除非没有特定的。
通过gulp中的参数给出的选项与这些选项合并 通过文件给出。合并顺序是:默认值, 配置文件,参数。后续选项会覆盖 以前的。
这意味着您可以直接在gulp任务中将任何默认的js-beautify选项传递给插件。
.pipe(prettify({
indent_level: 4, // applied to CSS, HTML, JS
js: {
indent_level: 2 // applied to JS only
}
))
但我强烈建议您将选项放在项目根目录下的JSON格式.jsbeautifyrc
文件中。
要获得更多的gulp灵活性,请参阅How can I write a simple gulp pipe function?