标签: uglifyjs

如何从Ant构建中使用UglifyJS?

我希望将UglifyJS实现到我的Ant构建过程中以替换YUI Compressor.入门的基本步骤是什么?

javascript uglifyjs

7
推荐指数
1
解决办法
4290
查看次数

uglify js错误意外令牌eof"undefined"

所以我使用npm install uglify-js安装了npm

我运行的命令是:

cat file1.js file2.js .. fileN.js | uglifyjs -o files.min.js
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

WARN: ERROR: Unexpected token eof «undefined», expected punc «,» [-:630,15]

/usr/local/lib/node_modules/uglify-js/lib/parse.js:199
    throw new JS_Parse_Error(message, line, col, pos);
          ^
Error
    at new JS_Parse_Error (/usr/local/lib/node_modules/uglify-js/lib/parse.js:185:18)
    at js_error (/usr/local/lib/node_modules/uglify-js/lib/parse.js:199:11)
    at croak (/usr/local/lib/node_modules/uglify-js/lib/parse.js:630:9)
    at token_error (/usr/local/lib/node_modules/uglify-js/lib/parse.js:638:9)
    at expect_token (/usr/local/lib/node_modules/uglify-js/lib/parse.js:651:9)
    at expect (/usr/local/lib/node_modules/uglify-js/lib/parse.js:654:36)
    at ctor.argnames (/usr/local/lib/node_modules/uglify-js/lib/parse.js:897:52)
    at function_ (/usr/local/lib/node_modules/uglify-js/lib/parse.js:902:15)
    at expr_atom (/usr/local/lib/node_modules/uglify-js/lib/parse.js:1114:24)
    at maybe_unary (/usr/local/lib/node_modules/uglify-js/lib/parse.js:1278:19)
Run Code Online (Sandbox Code Playgroud)

关于这是关于什么或我应该如何修复它的任何想法?

javascript concat minify npm uglifyjs

7
推荐指数
1
解决办法
2万
查看次数

使用uglifyjs对嵌套的类和变量进行管理

我使用uglifyjs来缩小连接的文件集,这种方法很好但不够好.构建的lib使用名称空间,因此类,函数和常量存储在根名称空间变量中:

(function() {
  var root = { api:{}, core:{}, names:{} };

  /* util.js file */
  root.names.SOME_LONG_NAMED_CONST='Angel';

  /* Person.js file */
  root.core.Person = function(name) { this.name = name };

  /* API.js with the functions we want to expose */
  root.api.perform = function(param_for_api) { /* do something */ }

  window.lib_name.perform = root.api.perform;

})();
Run Code Online (Sandbox Code Playgroud)

这被缩小为不那么小的版本

(function(){var a={api:{},core:{},names:{}};a.names.SOME_LONG_NAMED_CONST="Angel",a.core.Person=function(a){this.name=a},a.api.perform=function(){},window.lib_name.perform=a.api.perform})();
Run Code Online (Sandbox Code Playgroud)

我理解uglify可能认为root var是一个必须按原样保存并且不能更改的数据结构.有没有办法让uglify破坏根命名空间中的嵌套名称?

javascript minify uglifyjs uglifyjs2

7
推荐指数
2
解决办法
6077
查看次数

Grunt Uglify - 如何创建用于调试的源映射?

我正在项目中使用grunt并创建任务来缩小和连接许多.js文件.

我现在正试图弄清楚如何使用Uglify创建源图,以便其他团队可以轻松地分析控制台中的代码.

我的Gruntfile(在咖啡中)的一部分看起来像这两个:

        uglify:
        options:
            mangle: false
Run Code Online (Sandbox Code Playgroud)

/

    grunt.registerTask 'devmin', ['clean', 'concurrent:transform', 'useminPrepare', 'concat', 'uglify', 'usemin', 'copy:build', 'server', 'watch:dist'] # Dev - minifies files
Run Code Online (Sandbox Code Playgroud)

因此,当我在终端上运行"grunt devmin"时,我会有缩小版本,但我无法弄清楚如何为它们创建相关的源图以进行调试.

任何人都有提示?

谢谢!

javascript node.js uglifyjs gruntjs source-maps

7
推荐指数
1
解决办法
8811
查看次数

缩小Node只读的源代码有什么好处?

在NodeJS应用程序中,使用缩小的源代码服务器端有什么好处吗?

我能想到的唯一好处是,较小的JS文件可能会从磁盘上稍微加载一下.但这似乎可以忽略不计,因为它只会影响启动时间.

那么,在将它部署到我们的生产服务器之前,是否有任何理由通过uglify或闭合编译器处理我们的源代码?

javascript minify google-closure-compiler node.js uglifyjs

7
推荐指数
1
解决办法
1218
查看次数

使用gulp,Browserify,reactify,UglifyJS的源地图

我正在尝试获取与Chrome一起使用的JavaScript文件的源地图.当前gulp脚本的问题在于源映射(Browserify创建)导致文件的缩小版本.

例如,假设app.jsx是Browserify的一个入口文件,它拥有require('a')require('b')调用它.app.jsx获得浏览器化,重新设置和uglifyied并按预期写入app.js.但是,模块a和模块b中的所有源映射引用也都会缩小:

var gulp = require('gulp'),
    browserify = require('browserify'),
    watchify = require('watchify'),
    source = require('vinyl-source-stream'),
    buffer = require('vinyl-buffer'),
    bundler;

bundler = browserify({
    entries: '/app.jsx',
    cache: {},
    packageCache: {},
    fullPaths: true
});

bundler
    .transform('reactify');
    .transform({
        global: true
    }, 'uglifyify');

bundler = watchify(bundler);
bundler.on('update', function() {
    return bundler
        .bundle()
        .pipe(source('app.js'))
        .pipe(buffer())
        .pipe(gulp.dest('/js'));
});
Run Code Online (Sandbox Code Playgroud)

有关如何使其工作的任何想法?

uglifyjs browserify gulp reactify

7
推荐指数
1
解决办法
2839
查看次数

如何从package.json配置uglifyjs

目前,在开发Wordpress主题时,我使用一个简单的批处理文件来uglify我的js.一个示例批处理文件makebundle.bat

call uglifyjs^
  src/file1.js^
  src/file2.js^
  -cmo bundle.min.js
Run Code Online (Sandbox Code Playgroud)

然后我用watch它来构建它

watch makebundle src
Run Code Online (Sandbox Code Playgroud)

一切都很简单.现在,我想使这个特定于Windows的流程更少.由于这里概述原因, 我不想使用Grunt/Gulp,并且正在考虑尝试 使用npm作为构建工具.唯一的麻烦是,我无法从内部找到如何配置uglifyjspackage.json

编辑

这是我想要工作的一个例子package.json:

{
  "uglifyConfig": [
    {
      "outfile": "bundle.min.js,
      "files": [
        "src/file1.js",
        "src/file2.js"
      ]
      "config": {
        "mangle": true,
        "compress": true
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

javascript watch node.js uglifyjs package.json

7
推荐指数
2
解决办法
3243
查看次数

通过UglifyJS枚举正则表达式

我有一些JavaScript代码,我需要从中找到每个文字正则表达式的起始+结束索引.

如何从UglifyJS中提取此类信息?

var uglify = require('uglify-js');
var code = "func(1/2, /hello/);";
var parsed = uglify.parse(code);
Run Code Online (Sandbox Code Playgroud)

我进入变量的结构parsed非常复杂.而我所需要的只是[{startIdx, endIdx}, {startIdx, endIdx}]每个字面正则表达式的数组.

PS如果有人认为可以通过比UglifyJS更好的方式完成同样的任务,欢迎提出建议!

UPDATE

我知道如果我深入研究解析后的结构,那么对于每个正则表达式我都可以找到对象:

AST_Token {
     raw: '/hello/',
     file: null,
     comments_before: [],
     nlb: false,
     endpos: 17,
     endcol: 17,
     endline: 1,
     pos: 10,
     col: 10,
     line: 1,
     value: /hello/,
     type: 'regexp'
}
Run Code Online (Sandbox Code Playgroud)

我需要弄清楚如何从解析的结构中提取所有这些对象,这样我就可以编译位置索引列表.

javascript uglifyjs

7
推荐指数
1
解决办法
180
查看次数

打字稿:在编译时在自己的属性中获取类名

例如,如果我们有一个这样的类:

class MyClass {
  className: string;
}
Run Code Online (Sandbox Code Playgroud)

是否可以在编译时将“MyClass”分配给 className 属性?

编辑:已经尝试过 this.constructor.name。但是,后者对缩小代码没有帮助。因此检查是否有办法在将 typescript 代码编译为 JS 时捕获类名。我正在使用 angular-cli。

uglifyjs typescript angular-cli

7
推荐指数
1
解决办法
9352
查看次数

与Webpack 4一起使用Webpack的Lodash不是TreeShaking吗?

我想从生成的捆绑包中树摇动lodash以及我未使用的multiply功能webpack

我有2个主要文件app.js&math.js

它包含以下代码 -

app.js

import map from "lodash/map";

import { sum } from "./math";

console.log("");

console.log(`2 + 3 = ${sum(2, 3)}`);

map([1, 2, 3], x => {
    console.log(x);
});
Run Code Online (Sandbox Code Playgroud)

math.js

export const sum = (a, b) => a + b;
export const multiply = (m, n) => m * n;
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

const path = require("path");
const webpack = require("webpack");
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
const Jarvis = require("webpack-jarvis");

let plugins = [new …
Run Code Online (Sandbox Code Playgroud)

javascript uglifyjs uglifyjs2 webpack webpack-2

7
推荐指数
1
解决办法
3750
查看次数