2017-07-07 73 views
0

我想完成以下操作。PhpStorm文件观察器来缩小和合并来自多个文件夹的JS文件

我在应用程序根目录中有原始资产,例如文件夹assets/js中的JavaScript源文件。我也有文件夹public哪里应该会缩小文件,将被加载到应用程序中。

我想要的是,当我更改我的js文件时,我想让IDE创建它的缩小版本,然后将这些缩小的文件合并到一个文件夹中public

我需要两个文件监视器,但不知道如何配置它们。

我尝试了YUI Compressor的默认选项,并在源文件所在的同一文件夹中构建缩小文件。但我无法设法将这些文件与File Watcher合并。

我还创建了两个范围,一个用于源JS文件,另一个用于缩小JS文件。

我甚至不确定File Watchers是否可以做到这一点。我正在讨论多个文件夹和递归范围。

我将不胜感激任何帮助。

+0

我所知道的是如何在保存原始文件时创建缩小的js文件,但要将所有js缩小的文件合并为一个 - 首先为什么要这样做?其次它不常见。你对js缩小的文件感兴趣吗? – Edwin

+0

我想要合并所有文件,因为我只会在正文的最后加载一个缩小文件,并且有一个HTTP请求。不打。我知道如何创建缩小文件,这与YUI压缩器的默认选项一起工作。我可以将所有文件缩小到一个文件夹中吗?比方说,我有专用的min文件夹,无论文件夹在哪个文件夹中,所有缩小的文件都会放在该文件夹中。 – cvetan

回答

1

文件监视器本身无法做任何事情,因为它只是用CLI设置某个工具作为文件更改的监听器。因此,您需要找到一种工具,将缩小的文件合并为一个文件,并将其设置为观察器,外部工具等。您可以在网上找到大量此类文件 - 例如,请参阅 Combine multiple JavaScript files into one JS file

但是,而不是使用设置为看守,等2个独立的工具,我建议使用咕噜,咕嘟咕嘟的WebPack,... 您可以尝试使用grunt-contrib-uglify,例如:

module.exports = function (grunt) { 
grunt.initConfig({ 

    ngmin: { 
      concat:{ 
      src: ['assets/js/*.js'], 
      dest: 'public/out.min.js' 
    }} 
}); 
grunt.loadNpmTasks('grunt-ngmin'); 

grunt.registerTask('default', ['ngmin' ]) 

您可以使用Grunt console运行任务,或将其配置为文件观察器

0

我会怎么做,是让YUI压缩机创建保存.min.js文件,然后作为一个外部工具(Settings->Tools->External Tools)这个工具compressJS for linux OS使用(如果你有窗户,你可以尝试去适应这个脚本或者在Linux上运行此env就像码头工具,虚拟机等 - 最终使用远程SSH外部工具从设置)。

最后,您可以设置工具的键盘映射,以随时运行它。 您也可以将其设置为文件观察器,但这会处理太多的imho。

+0

我可以设置它以递归地遍历js源文件夹中的所有文件夹吗?假设我有部分应用程序的文件夹?管理员JS,产品JS等?也可以在这里澄清术语,我不明白它在创建文件观察器方面是否正确?什么是工作目录和什么是刷新的输出路径?工作目录中的文件观察者的结果将是 - 例如最小文件?我尝试了几个选项,并没有完成我想要的,我想我不完全理解什么是什么。 – cvetan

+0

我认为他们都清楚它们是什么:工作目录是保存js文件时的目录。刷新的输出路径是'.min.js'文件的位置(要刷新的内容)。你说你已经完成了js文件的缩小,所以我没有包含那部分。 – Edwin

+0

是的,我做到了。只是我正在考虑将所有缩小的文件保存在一个文件夹中,然后创建合并文件会更容易。我只想指向该文件夹从那里收集所有文件并创建一个文件。但我无法设法将结果文件移动到某个任意文件夹。我希望这样的文件观察者可能: 递归观察assets/js文件夹中的所有JS文件, 在assets/js/min文件夹中生成最小文件。 其他: Wathch用于assets/js/min文件夹中的所有文件。 将文件合并到一个文件并将其保存在public/js文件夹中。 我可以这样做吗? – cvetan

0

好的,我已经设置了gulp任务来缩小和连接文件。然后我为我的JS文件创建了自定义文件观察器。现在一切都按照我的意图工作,而不必手动运行任何东西。谢谢你们。 :)