Concat和Minify节点中的JS文件

NodeJS中是否有模块连接和缩小JavaScript文件?

如果您使用的是Connect,那么Connect-Assetmanager的运气就不错了

我build议使用UglifyJS ,它是NodeJS的JavaScriptparsing器/压缩器/压缩器/美化器库。

如果您对自动化工具感兴趣,而不是简单地连接和缩小文件,则有以下解决scheme:

  • GruntJS是一个用于JavaScript项目的基于任务的命令行构build工具。 当前版本有以下内置任务:

    1. concat – 连接文件。
    2. init – 从预定义的模板生成项目脚手架。
    3. lint – 用JSHintvalidation文件。
    4. min – 使用UglifyJS对文件进行最小化。
    5. qunit – 在无头PhantomJS实例中运行QUnitunit testing。
    6. 服务器 – 启动一个静态的Web服务器。

除此之外,还有很多插件可用。

  • Gulp是一个工具包,可以帮助您在开发工作stream程中自动执行痛苦或耗时的任务。 对于Web开发(如果这是你的事情),它可以帮助你做CSS预处理,JS转运,缩小,实时重新加载,等等。 所有主要的IDE都集成了集成function,人们都热衷于PHP,.NET,Node.js,Java等等。 拥有超过1700个插件(还有很多你可以不需要插件),让你放弃构build系统,重新开始工作。

  • Yeoman是一套function强大而又有见地的工具,库和工作stream程,可帮助开发人员快速构build漂亮,引人注目的Web应用程序。

    1. 避雷脚手架 – 轻松搭build可自定义模板的新项目(例如HTML5 Boilerplate , Twitter Bootstrap ),AMD(通过RequireJS )等等。
    2. 自动编译CoffeeScript和Compass – 我们的LiveReload监视过程会自动编译源文件并在您做出更改时刷新浏览器,因此您无需执行此操作。
    3. 自动提示您的脚本 – 所有的脚本都会自动运行jshint,以确保它们遵循语言最佳实践。
    4. 内置预览服务器 – 不必再启动自己的HTTP服务器。 我的内置的一个可以用一个命令来解雇。
    5. 真棒图像优化 – 我使用OptiPNG和JPEGTran优化所有的图像,以便您的用户可以花更less的时间下载资源和更多的时间使用您的应用程序。
    6. AppCache清单生成 – 我为您生成您的应用程序caching清单。 只是build立一个项目和繁荣。 你会免费得到它。
    7. 杀手构build过程 – 不仅可以缩小和拼接, 我还优化了所有的图像文件,HTML,编译你的CoffeeScript和Compass文件,生成一个应用程序caching清单,如果你使用的是AMD,我们将通过r.js传递这些模块,所以你不需要。
    8. 集成包pipe理 – 需要依赖? 这只是一个按键。 我允许你轻松地通过命令行(例如,yeomansearchjquery )search新包,安装它们并保持更新,而无需打开浏览器。
    9. 支持ES6模块语法 – 尝试使用最新的ECMAScript 6模块语法编写模块。 这是一个实验性function,可以转换回ES5,因此您可以在所有现代浏览器中使用该代码。
    10. PhantomJSunit testing – 轻松通过PhantomJS在无头WebKit中运行unit testing。 当你创build一个新的应用程序,我还包括一些testing脚手架为您的应用程序。

UglifyJS是一个节点模块,是关于缩小JavaScript的。 我不认为它也join文件,但可能有一个选项,我错过了。

编辑:与UglifyJS 2 ,它也build立了连接。

如果你想在你的节点应用程序中这样做,这很容易。 这允许您在运行时dynamic生成缩小/连接的js脚本,而无需使用grunt或yeoman方式。

npm install uglify-js 

并在你的模块中:

 var fs = require('fs'); var uglify = require("uglify-js"); var uglified = uglify.minify(['file1.js', 'file2.js', 'file3.js']); fs.writeFile('concat.min.js', uglified.code, function (err){ if(err) { console.log(err); } else { console.log("Script generated and saved:", 'concat.min.js'); } }); 

你会更好地使用gulp / webpack来连接/组织/捆绑您的资产。


为了joinjs文件,你可以像在twitter bootstrap makefile中那样做

 cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > docs/assets/js/bootstrap.js 

这只是一个输出到js文件的连接

然后你可以安装uglify-js来缩小js:

 npm -g install uglify-js 

并用你的path / file.js ofc来执行这个命令:

 uglifyjs docs/assets/js/bootstrap.js -nc > docs/assets/js/bootstrap.min.js 

正如在uglifyjs 2之后的评论中所提到的,你也可以这样做:

 uglifyjs --compress --mangle -- input.js 

如果你喜欢Rails 3.1资产pipe道的方法,你应该尝试我的连接资产库。

尝试这两个Grunt插件

https://www.npmjs.org/package/grunt-contrib-concat

https://www.npmjs.org/package/grunt-contrib-uglify

你可以像这样安装你需要的一切:

 npm install grunt npm install grunt-cli npm install grunt-contrib-concat npm install grunt-contrib-uglify 

然后创build你的grunt文件,如下所示:

Gruntfile.js

 module.exports = function(grunt){ grunt.initConfig({ concat: { options: { process: function(src, path){ return '\n/* Source: ' + path + ' */\n' + src; } }, src: [ '../src/**/*.js' ], dest: '../bin/app-debug.js' }, uglify: { src: '../bin/app-debug.js', dest: '../bin/app.js' }, watch: { options: { atBegin: true, event: ['all'] }, src: { files: '../src/**/*.js', tasks: ['concat'] }, dist: { files: '../bin/app-debug.js', tasks: ['uglify'] }, } } grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('default', ['watch']); } 

最后,在terminal中inputgrunt ,Grunt将开始观察JavaScript文件的变化,并自动对其进行concat和uglify(每当你将变更保存在../src/

我肯定会build议Closure编译器的简单模式。

也许不完全是你在找什么,但Enderjs可以工作。