2013-03-23 52 views

回答

108

它管道uglifyjs:

browserify main.js | uglifyjs > bundle.js 

可以使用NPM像这样安装:

npm install -g uglify-js 
+3

如何用grunt browserify/watchify任务来做到这一点? – 2013-12-29 22:32:51

+1

如果你使用咕噜声,我会建议分两步做。首先使用browserify进行编译,然后进行缩小。优点是你可以通过源地图和生产版本来开发版本,它可以将所有东西都分离出来。 – topek 2013-12-30 08:08:40

+0

是的,这就是我最终做的。其实际上3个步骤,你必须清理中间文件。谢谢! – 2013-12-31 00:01:16

15

或者使用uglifyify变换它“在应用Uglify的”挤压“变换之前为您提供了好处,它由Browserify,m处理你可以去除条件需求的死代码路径。“

+0

它仍然需要使用顶级答案中显示的uglify管道。他们在文档的开头就这么说。 – 2016-10-11 19:36:03

21

从3.38.x开始,您可以使用我的minifyify插件缩小您的包并仍然有可用的源地图。这对其他解决方案来说是不可能的 - 您可以做的最好的事情是映射回未压缩的包。 Minifyify一路映射回您单独的源文件(是的,甚至到CoffeeScript的!)

+1

它说它支持到browserify版本9. Browserify目前在11.0.1。它会支持吗? – cchamberlain 2015-09-03 19:28:26

+0

[uglifyify](https://github.com/hughsk/uglifyify)似乎对我来说是一个很好的替代品 – 2017-02-20 01:13:43

3

无需使用插件不再来缩小,同时保留源地图:

browserify main.js --debug | uglifyjs --in-source-map inline --source-map-inline > bundle.js 
3

花几个小时的调查后,如何构建新的构建过程,我认为其他人可能从我最终做的事情中受益。我在回答这个老问题,因为它在Google看来很高。

我的用例比OP所涉及的要多一点。我有三种构建方案:开发,测试和生产。由于大多数专业开发人员都会有相同的要求,我认为超越原始问题的范围是可以理解的。

在开发中,我使用watchify在JavaScript文件更改时使用源映射构建一个未压缩的包。我不希望uglify这一步,因为我希望构建在完成之前完成,直到刷新浏览器并刷新,并且在开发过程中它没有任何好处。为了实现这一点我使用:

watchify app/index.js --debug -o app/bundle.js -v 

出于测试,我要完全相同的代码作为生产(例如变丑),但我也希望有一个源映射。我做到这一点有:

browserify app/index.js -d | uglifyjs -cm -o app/bundle.js  --source-map "content=inline,filename='bundle.js',url='bundle.js.map'" 

对于生产,代码压缩与丑化,没有来源的地图。

browserify app/index.js | uglifyjs -cm > app/bundle.js 

注:

我已经使用在Windows 7上这些指令,MacOS的高塞拉利昂和Ubuntu 16.04。

我已经停止使用minifyify,因为它不再被维护。

有可能比我分享更好的方式。我已经读过它显然有可能通过在与browserify结合之前通过uglify所有源文件来获得优越的压缩。如果你比我有更多的时间花在它上面,你可能希望调查一下。

如果你没有watchify,丑化-JS或browserify已经安装,因此与故宫安装:

npm install -g browserify 
npm install -g watchify 
npm install -g uglify-js 

如果您已经安装了旧版本,我建议你升级。特别是uglify-js,因为它们对命令行参数做出了重大改变,这些改变使Google中出现的大量信息无效。