标签: uglifyjs

如何使用RequireJS优化器删除注释?

我正在尝试从优化的脚本文件中删除版权注释.我们正在使用RequireJS和默认的UglifierJS.我查看了Uglifier,它本身有一个名为-ncor 的标志--no-comments,但看起来似乎并不像RequireJS允许你在构建配置文件中设置该选项.反正有没有这样做?

javascript optimization requirejs uglifyjs js-amd

19
推荐指数
1
解决办法
5598
查看次数

为什么这个JavaScript有效?

我正在查看来自UglifyJS的一些内容的输出,并发生在以下代码中:

var a = 0;
var b = function () {
    return function () {
        a++;
    }(), 'Hello, World'
}();
Run Code Online (Sandbox Code Playgroud)

运行后,该代码a1b字符串Hello, World!.

乍一看似乎bundefined因为看起来返回值没有返回值的函数的结果,但后面跟着一个逗号和一个字符串文字.

为什么这样做?
为什么UglifyJS不执行匿名函数然后Hello, World!作为下一个语句返回?

javascript uglifyjs

19
推荐指数
2
解决办法
1151
查看次数

如何将TypeScript代码和JS库合并到一个带源映射的文件中?

我可以使用以下内容将源Type映射成功编译为单个JS文件:

tsc --sourcemap --out app.js app.ts
Run Code Online (Sandbox Code Playgroud)

我还可以使用UglifyJS成功缩小输出,同时保持源映射的完整性:

uglifyjs app.js --source-map app.js.map --in-source-map app.js.map -o app.js
Run Code Online (Sandbox Code Playgroud)

但是,我想稍微进一步.我想将我编译的TypeScript代码(app.js)与几个第三方JS库合并到一个缩小的文件中,该文件维护源映射指向原始TypeScript(对于我的代码)或JavaScript(对于第三方库).

我尝试过类似的东西,基本上只是将一个JS库文件添加到UglifyJS的输入中:

uglifyjs app.js lib/javascript-library.js --source-map app.js.map --in-source-map app.js.map -o app.js
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎不起作用.它确实将所有内容成功合并到一个文件中,并且似乎保留了TypeScript代码的源映射.但是当我输入错误时lib/javascript-library.js,浏览器中的JS控制台(使用源映射)说错误出现在我的一个TypeScript文件中,这显然是错误的.

我是一个TypeScript newb,我无法想象我是第一个想要将TS输出与随机JS库结合在一个带有源映射的缩小文件中的人,但我找不到任何人在谈论它.也许我的方法完全错了?

javascript uglifyjs source-maps typescript

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

Webpack以错误的顺序捆绑我的文件(CommonsChunkPlugin)

我想要的是通过CommonsChunkPluginWebpack 以特定顺序捆绑我的JavaScript供应商文件.

我正在使用CommonsChunkPluginfor Webpack.官方文档的用法很简单直接.它按预期工作,但我相信该插件按字母顺序捆绑我的文件(可能是错误的).插件没有选项来指定它们应该捆绑的顺序.

注意:对于那些不熟悉Bootstrap 4的人来说,它目前需要一个名为Tether的JavaScript库依赖项.必须在Bootstrap之前加载系绳.

webpack.config.js

module.exports = {
  entry: {
    app: './app.jsx',
    vendor: ['jquery', 'tether', 'bootstrap', 'wowjs'],
  },

  output: {
    path: __dirname + '/dist',
    filename: 'bundle.js',
  },

  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        filename: 'vendor.bundle.js'
    }),

    new webpack.optimize.UglifyJsPlugin(),
  ],
};
Run Code Online (Sandbox Code Playgroud)

这里发生了两件事:

  1. vendor.bundle.js包含bootstrap,jquery,tether, wowjs
  2. bundle.js 包含我的其余应用程序

为了捆绑:
正确的: jquery,tether,bootstrap,wowjs
不正确的: bootstrap,jquery,tether,wowjs

请注意,在我的webpack.config.js中, …

javascript uglifyjs webpack webpack-2

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

UglifyJS:concat and minify或反之亦然?

我正在编写一个使用许多JS文件的应用程序.Underscore,Backbone,jQuery,用于滑块的jQuery插件,用于模型,路由器,集合和视图的多个文件.

在我的开发机器中,我分别加载每个文件,但在生产中我只使用一个JS文件(minified,gziped,less http req等).

在我的构建过程中,每个文件都用UglifyJS缩小,然后连接到prod.js. 这是构建该文件的正确方法吗?或者我应该将每个文件连接到prod.js然后用UglifyJS缩小?

非常感谢!

javascript deployment uglifyjs

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

来自UglifyJs的bundle.js中的错误名称

我正在尝试使用UglifyJS来最小化/压缩我的bundle.js文件.当我跑步时webpack -p,我得到以下内容:

ERROR in bundle.js from UglifyJs Name expected [bundle.js:105519,6]

105519行如下:

const {M, l, pattern} = __webpack_require__(862).

我正在使用React w/ES6.对于什么是错的任何想法?

javascript uglifyjs ecmascript-6 reactjs webpack

18
推荐指数
1
解决办法
5364
查看次数

Uglify-js不会破坏变量名称

试图为我的js库准备好的构建环境.根据网络上的评论,UglifyJS似乎是最好的压缩模块之一,在NodeJS下工作.所以这里是建议缩小代码的最佳方法:

var jsp = require("uglify-js").parser;
var pro = require("uglify-js").uglify;

var orig_code = "... JS code here";
var ast = jsp.parse(orig_code); // parse code and get the initial AST
ast = pro.ast_mangle(ast); // get a new AST with mangled names
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
var final_code = pro.gen_code(ast); // compressed code here
Run Code Online (Sandbox Code Playgroud)

如此处所示,pro.ast_mangle(ast)应该修改变量名称,但事实并非如此.我从这个管道中得到的只是javascript代码,没有空格.起初我认为我的代码没有针对压缩进行优化,但后来我尝试使用Google Closure并进行了相当大的压缩(包含变量名称和所有内容).

UglifyJS专家,任何暗示我做错了什么?

更新:

实际代码太大,无法在此处引用,但即使是这样的代码段也不会被破坏:

;(function(window, document, undefined) {

    function o(id) {
        if (typeof id !== …
Run Code Online (Sandbox Code Playgroud)

javascript compression performance minify uglifyjs

17
推荐指数
2
解决办法
3万
查看次数

在r.js中禁用uglyfying

我正在寻找一种方法来防止r.js(RequireJS'优化脚本)使用我们的JS模块来保持可读性以便进行调试.我希望脚本(顺便在Node.js上运行)有一些命令行选项可以传递.不幸的是,文档是否相当差.

javascript optimization requirejs uglifyjs r.js

17
推荐指数
1
解决办法
6370
查看次数

如何将uglify-es集成到grunt中?

我正在使用gruntjs(使用uglifyjs)来构建我的Angularjs应用程序.但是uglifyjs仍然不支持es6,所以在相应的GitHub问题中我发现了这一点.所以现在有uglify-es,它似乎支持es6.但我不确定如何将它与grunt集成.现在我有模块"grunt-contrib-uglify",它有一个依赖uglifyjs,现在使用.我怎样才能使用咕噜声uglify-es呢?

javascript uglifyjs gruntjs ecmascript-6 grunt-contrib-uglify

17
推荐指数
2
解决办法
4335
查看次数

Rails 5 Heroku部署错误:ExecJS :: ProgramError:SyntaxError:意外的令牌:name(autoRegisterNamespace)

当尝试将rails 5应用程序部署到heroku时,我遇到以下错误Running: rake assets:precompile:

remote:        ExecJS::ProgramError: SyntaxError: Unexpected token: name (autoRegisterNamespace) (line: 14767, col: 7, pos: 457487)
remote:        Error
remote:        at new JS_Parse_Error (<eval>:3623:11948)
remote:        at js_error (<eval>:3623:12167)
remote:        at croak (<eval>:3623:21858)
remote:        at token_error (<eval>:3623:21995)
remote:        at unexpected (<eval>:3623:22083)
remote:        at semicolon (<eval>:3623:22601)
remote:        at simple_statement (<eval>:3623:25779)
remote:        at <eval>:3623:23567
remote:        at <eval>:3623:22774
remote:        at block_ (<eval>:3623:27903)
remote:        at <eval>:3623:23677
remote:        at <eval>:3623:22774
remote:        new JS_Parse_Error ((execjs):3623:11948)
remote:        js_error ((execjs):3623:12167)
remote:        croak ((execjs):3623:21858)
remote:        token_error ((execjs):3623:21995)
remote: …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails heroku uglifyjs execjs

16
推荐指数
3
解决办法
5719
查看次数