【发布时间】:2019-09-27 06:49:25
【问题描述】:
我正在尝试摆脱 gulp 并使用 npm 脚本。我们的开发人员使用不同版本的 node/gulp,而对插件和弃用的依赖一直是不必要的麻烦。
我正在尝试将我们的 gulp 脚本转换为 npm,但有一些地方我卡住了。我在从 gulp-sourcemaps 转换为 npm map-stream 以及从 gulp-uglify 转换为 uglifyjs 时遇到问题。
这是我们当前使用的 gulp 文件:
/*
This file in the main entry point for defining Gulp tasks and using Gulp plugins.
Click here to learn more. http://go.microsoft.com/fwlink/?LinkId=518007
*/
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var sourcemaps = require('gulp-sourcemaps');
var pump = require('pump');
var del = require('del');
// set a variable telling us if we're building in release
var isRelease = true;
if (process.env.NODE_ENV && process.env.NODE_ENV !== 'Release') {
isRelease = false;
}
var config = {
//Include all js files but exclude any min.js files
src: ['Scripts/*.js', '!Scripts/*.min.js']
}
//delete the output file(s)
gulp.task('clean', function () {
//del is an async function and not a gulp plugin (just standard nodejs)
//It returns a promise, so make sure you return that from this task function
// so gulp knows when the delete is complete
return del(['Scripts/*.min.js', 'Scripts/Maps/*.map']);
});
// Combine and minify all files from the app folder
// This tasks depends on the clean task which means gulp will ensure that the
// Clean task is completed before running the scripts task.
gulp.task('scripts', ['clean'], function (cb) {
pump([
gulp.src(config.src),
sourcemaps.init(),
uglify({ mangle: isRelease }),
rename({ suffix: '.min' }),
sourcemaps.write('Maps', { includeContent: false, sourceRoot: './' }),
gulp.dest('Scripts/')
],
cb
);
});
//Set a default tasks
gulp.task('default', ['scripts'], function () { });
这是我当前的 npm 脚本(仍有一些错误):
/*
This is the main entry point for defiinng npm tasks
*/
const del = require('del');
var map = require('map-stream');
var pump = require('pump');
var vfs = require('vinyl-fs');
var uglifyjs = require('uglify-js');
// set a variable telling us if we're building in release
var isRelease = true;
if (process.env.NODE_ENV && process.env.NODE_ENV !== 'Release') {
isRelease = false;
}
console.log(process.env.NODE_ENV);
//task to delete output files
(async () => {
const deletedPaths = await del(['Scripts/*.min.js', 'Scripts/Maps/*.map']);
console.log('Deleted files and folders:\n', deletedPaths.join('\n'));
})();
var log = function(file, cb) {
console.log(file.path);
cb(null, file);
};
// vinyl metadata object
// Include all js files but exclude any min.js files
pump([
vfs.src(['Scripts/*.js', '!Scripts/*.min.js']),
map(log),
uglifyjs({mangle:isRelease}),
rename({ suffix: '.min' }),
(vfs.dest('Scripts/'))
])
映射应该在 Scripts 目录下创建一个 Maps 文件夹。
Scripts
--Maps
--jquery.min.js.map
--jquery-1.4.1.min.js.map
任何帮助将不胜感激。
谢谢!
【问题讨论】:
标签: npm gulp npm-scripts gulp-sourcemaps