如何在同一个browserify命令中缩小和分解捆绑文件?

How to minify and factor-bundle files in the same browserify command?

提问人:Richard 提问时间:8/15/2015 更新时间:8/5/2023 访问量:627

问:

我目前有这个命令,我用它来捆绑我的文件,并将所有通用内容拉到一个通用文件中:factor-bundle

browserify index.js bar-charts.js list-filter.js dashboard.js 
  -p [ factor-bundle -o ../../static/js/index.js -o ../../static/js/bar-chart.js -o ../../static/js/list-filter.js -o ../../static/js/dashboard.js ] 
  -o ../../static/js/common.js

我以前也使用过这个命令来丑化单个文件:

 browserify index.js | uglifyjs > ../../static/js/index.min.js

如何在同一命令中将文件与 组合在一起,并用 缩小它们?factor-bundleuglifyjs

我在 factor-bundle 文档中找到了这个示例,但我真的不明白如何适应它。

(如果效果更好,我也可以使用两个命令。我只想以缩小和合并的文件结束!

javascript browserify uglifyjs factor-bundle

评论

0赞 Jencel 12/18/2015
你为什么不使用uglifyify?

答:

0赞 Alex Faunt 12/19/2015 #1

我碰巧最近一直在研究这个领域,偶然发现了我认为可能能够帮助你的东西。

browserify files/*.js \
    -p [ ../ -o 'uglifyjs -cm | tee bundle/`basename $FILE` | gzip > bundle/`basename $FILE`.gz' ] \
    | uglifyjs -cm | tee bundle/common.js | gzip > bundle/common.js.gz

我没有过多地涉足 browserify,但对我来说,这看起来好像只是将 factor-bundle 的输出输送到 uglify 中。

来源: https://gist.github.com/substack/68f8d502be42d5cd4942

希望这对某人有所帮助

0赞 Ebod Shojaei 8/5/2023 #2

为了在单个命令中缩小和捆绑文件,您可以使用运算符从终端在一行中执行多个命令(即 、)。&&browserifyuglifyjs

为了单独缩小每个文件,我们可以为每个文件链接多个命令,但更简洁的方法是使用该模块,它允许将多个文件单独缩小到单个文件/文件夹(在您的例子中,是一个文件夹)。此模块的警告是,我们不能重命名单个文件(例如,到 ),因此,如果重命名文件是严格要求,您可以继续使用 uglifyjs 并像上面提到的那样链接命令。uglifyjsuglifyjs-folderindex.jsindex.min.js

假设使用,我已将缩小文件的目标设置为生产就绪文件夹,方法是包括 ,其中独立缩小每个文件并指定缩小文件的目标文件夹(有关详细信息,请参阅文档)。uglifyjs-folder./static/js/min/-eoeo

法典

方法 1:终端命令

确保您的依赖项已全局安装在您的系统上(例如,)。终端命令如下:npm i -g uglifyjs-folder

browserify index.js bar-charts.js list-filter.js dashboard.js -p [ factor-bundle -o ../../static/js/index.js -o ../../static/js/bar-chart.js -o ../../static/js/list-filter.js -o ../../static/js/dashboard.js ] -o ../../static/js/common.js && uglifyjs-folder ../../static/js -eo ../../static/js/min

方法 2:NPM 脚本

或者,假设你的项目使用的是 npm(或 yarn),你可以访问 和 命令并将其重构为单独的 npm 脚本,并通过在项目的根目录(即 where is located)中运行 terminal 命令来一起执行它们。npm 脚本定义如下:package.jsonbrowserifyuglifyjsnpm run buildpackage.json

"scripts": {
  "bundle": "browserify index.js bar-charts.js list-filter.js dashboard.js -p [ factor-bundle -o ../../static/js/index.js -o ../../static/js/bar-chart.js -o ../../static/js/list-filter.js -o ../../static/js/dashboard.js ] -o ../../static/js/common.js",
  "minify": "uglifyjs-folder ../../static/js -eo ../../static/js/min",
  "build": "npm run bundle && npm run minify"
}

希望这有帮助!