我想知道是否有一种方法可以使用已安装在我的计算机中的 r.js(RequireJS Optimizer)在命令行中仅丑化一个文件。就像我们可以使用node r.js cssIn="" out=""...
我实际上是在没有互联网连接的计算机上工作,我无法在上面安装其他东西(尤其是使用 npm)
也许有可能从另一台计算机下载 uglifyjs 包,包括所有准备安装在我的计算机上的依赖项?虽然我没有找到类似的东西......
谢谢
我已经UglifyCSS使用命令全局安装:
npm install -g uglifycss
Run Code Online (Sandbox Code Playgroud)
如何获取已安装的当前版本UglifyCSS?
聚苯乙烯
UglifyJS我用命令检查的版本:
uglifyjs -V
Run Code Online (Sandbox Code Playgroud)
但是当我尝试类似的命令时UglifyCSS:
uglifycss -V
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
unable to process "-V" with Error: ENOENT, no such file or directory '-V'
Run Code Online (Sandbox Code Playgroud)
当我尝试时出现同样的-v错误--version
我在IntelliJ IDEA中设置了一个UglifyJS文件观察器,它在我编辑时工作得很好 - 我修改了源js,自动在旁边创建了缩小版本.
但是,当我运行Ant构建,并将缩小版本复制到构建工作目录时,观察者"帮助"在构建工作目录中创建它们的双倍缩小版本(*.min.min.js),不行.
我已经将观察者的范围设置为'src'模块,但显然这不符合你的想法,因为当Ant将文件复制到'build'模块时会产生双打.当我使用IDEA从src手动复制单个文件进行构建时会发生错误.
我不知道如何将其设置为包含*.js但排除*.min.js,这是非常正确的事情.(看起来如此明智,以至于Uglify应该将其内置,但我可以看到它没有.)
除了摆脱观察者和编写脚本之外,还要进行缩小,或仅复制原始的js版本,让观察者(重新)创建缩小的版本,最好的方法是什么?
我的Gulp设置在其他方面非常有效,但如果我的JS文件出错,它会停止.直到Gulp 4终于发布之前,我们都被困在Gulp中使用不完美的错误系统......那么我怎么能抓住Uglify的错误呢?
gulp.task('js', function() {
return gulp
.src(inputJS)
.pipe(sourcemaps.init())
.pipe(concat('main.js'))
.pipe(uglify(uglifyOptions))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest(outputJS))
});
Run Code Online (Sandbox Code Playgroud)
根据Uglify文档,gulp-uglify如果无法缩小特定文件,则会发出"错误"事件.只要有可能,PluginError对象将包含以下属性:fileName,lineNumber,message.
我最接近它的工作是:.on('error', function(uglify) { console.error(uglify.message) })),但它结束了上面的Gulp任务不再做了.
编辑:我意识到有许多Gulp扩展有助于处理错误处理(例如Gulp-Util,Stream-Combiner2,Gulp-Plumber等)但我不希望安装一个全新的扩展仅用于Uglify(我正在处理我的Sass错误,没有一个).
如果存在"eval()",则uglify不会破坏变量.命令行:
uglifyjs script/script.js --compress --mangle --unsafe/path/to/script
例:
(function(window, document, $) {
"use strict";
var test = function( $data )
{
eval( $data );
};
test( '' );
})(window, document, jQuery);
Run Code Online (Sandbox Code Playgroud)
结果:
!function(window,document,$){"use strict";var test=function($data){eval($data)};test("")}(window,document,jQuery);
Run Code Online (Sandbox Code Playgroud)
预期:
!function(n,t,u){"use strict";var c=function(n){eval(n)};c("")}(window,document,jQuery);
Run Code Online (Sandbox Code Playgroud) 当我使用gulp-uglify来缩小Javascript文件时,订单会搞砸.
让我们说我的任务按预期工作:
var gulp = require('gulp');
var rename = require('gulp-rename');
var gp_concat = require('gulp-concat');
gulp.task('js', function() {
gulp.src([
'./public/bower_components/jquery/dist/jquery.min.js',
'./public/js/functions.js',
])
.pipe(gp_concat('combined.js'))
.pipe(gulp.dest(path.js + '/dist'))
});
Run Code Online (Sandbox Code Playgroud)
添加丑化线,它改变了顺序jquery和functions文件,并将functions.js以上jquery.
var gulp = require('gulp');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var gp_concat = require('gulp-concat');
gulp.task('js', function() {
gulp.src([
'./public/bower_components/jquery/dist/jquery.min.js',
'./public/js/functions.js',
])
.pipe(gp_concat('combined.js'))
.pipe(gulp.dest(path.js + '/dist'))
.pipe(uglify({
preserveComments: 'license'
}))
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(path.js + '/dist'))
});
Run Code Online (Sandbox Code Playgroud)
任何可能的解决方案?当然,functions.js只是一个带有函数的平面Javascript文件,并没有包含在IIFE中.
当我尝试捆绑我的应用程序时:
react-native bundle --platform ios --dev false \
--entry-file index.ios.js --bundle-output iOS/main.jsbundle
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,没有其他详细信息:
SyntaxError: Unexpected token: operator (*)
Run Code Online (Sandbox Code Playgroud)
对于它的价值,这适用于(with --dev true):
react-native bundle --platform ios --dev true \
--entry-file index.ios.js --bundle-output iOS/main.jsbundle
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是问题出现在UglifyJS的某个步骤中,可能与以下内容有关:
https://github.com/mishoo/UglifyJS2/issues/1199
有小费吗?欢迎提出更深入挖掘的建议!谢谢!
当我们的生产应用程序抛出错误时,它始终在同一行,并且使得调试非常困难.我们已经启用了源映射,但由于各种原因,这几乎没有帮助.如果我们能够在缩小代码时保持换行符将会非常有用,这将为我们提供关于问题所在位置的更好线索.然后我至少可以搜索压缩代码.有什么办法吗?
我正在尝试使用gulp的uglify插件来缩小我的Web组件,但它失败了,因为它无法识别自定义的html标记.
是否有任何gulp插件可以缩小包含自定义标签的html?
我有一个带有laravel和vuejs的Web应用程序。我使用laravel-mix并且在我webpack.mix.js有:
const { mix } = require('laravel-mix');
mix.sourceMaps();
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
Run Code Online (Sandbox Code Playgroud)
现在我会混淆代码,所以我所有的组件,如何使用laravel-mix来做到这一点?
uglifyjs ×10
gulp ×2
gulp-uglify ×2
javascript ×2
minify ×2
npm ×2
ant ×1
eval ×1
file-watcher ×1
ios ×1
laravel-mix ×1
node.js ×1
polymer ×1
react-native ×1
requirejs ×1
ubuntu ×1
uglifycss ×1
vue.js ×1