从Browserify捆绑的JS中压缩代码

6

我已安装以下模块:

  • babelify
  • babel-preset-es2015
  • browserify
  • uglifyify

现在,我有一个核心文件 server.js,其中包含ES6 JavaScript。我可以使用以下命令将ES6转换为ES5并捆绑代码以供浏览器使用:

browserify server.js -o ./public/bundle.js -t [ babelify --presets [es2015] ]

现在我想使用uglifyify压缩代码添加源映射。但是我无法使其工作,我无法找到正确的命令。我已经尝试了以下命令:

browserify server.js -t uglifyify -t [ babelify --presets [es2015] ] -o ./public/bundle.js

browserify server.js -o ./public/bundle.js -t [ uglifyify, babelify --presets [es2015] ]

browserify server.js uglifyify -o ./public/bundle.js -t [ babelify --presets [es2015] ]

即使没有Babel:

browserify server.js -o ./public/bundle.js -t uglifyify
browserify server.js -t uglifyify -o ./public/bundle.js

只是一个猜测,也许是你安装 uglifify 的方式不对。例如,由于某种原因,我无法像 browserify 和 watchify 一样全局安装它并使其工作(因此,在 npm 中没有 -g)。如果有帮助的话,这在我的脚本中可以正常工作:NODE_ENV=production browserify -t [ babelify --presets [ es2015 react ] ] -g uglifyify scripts/index.jsx -o bundle.js。不过,我仍然需要像 uglifyjs 这样的东西来进行更好的压缩。我还没有把它加进去。 - juanitogan
2个回答

3

仅安装本地uglifyify是不够的,您还需要全局安装uglify-es,因为它被uglifyify使用。您可以按照以下方式进行安装:

npm i -g uglify-es

然后你可以像这样使用它:
browserify server.js -o ./public/bundle.js -t uglifyify

使用babelify

如果你还需要使用babelify,下面是如何操作:

browserify server.js -o ./public/bundle.js -t uglifyify -t babelify

直接使用uglify-es

你也可以直接使用uglify-es,而不必使用uglifyify,方法如下:

browserify server.js | uglifyjs -c > ./public/bundle.js
uglifyify 的唯一目的是使得 uglify-es 可以被用作 browserify转换器

0

也许你需要使用管道符“|”来执行多个程序。试试这个:

browserify server.js -t babelify | uglifyjs > public/bundle.js

希望这能帮到你,否则我很乐意继续帮助你解决这个问题;)

最好的祝福。


谢谢您的帮助,但对我来说还不起作用。我尝试了这个:browserify server.js -t babelify | uglifyify > bundle.js,但是我收到错误信息:uglifyify: command not found。我应该使用uglifyjs吗?我需要使用--plugin吗?看起来像minifyify会这样做:https://github.com/ben-ng/minifyify - CaribouCode
可能是因为您打错了单词,应该是"uglifyjs"而不是"uglifyify"。 - Rene Polo
请确保首先将库安装为全局,方法是执行npm install -g uglify-js。 - Rene Polo
如果我需要使用 uglify-js,那么 uglifyify 有什么用?https://www.npmjs.com/package/uglifyify - CaribouCode
我现在已经成功使用minifyify实现了我的目标。但是uglifyify为什么不起作用还在困扰着我。 - CaribouCode
@Coop:uglifyifyuglify-js的browserify转换器包装器。 - Felix Kling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接