2015-07-21 4 views
4

В настоящее время при разработке тем Wordpress я использую простой командный файл для uglify my js. Пример пакетного файла makebundle.batКак настроить uglifyjs из package.json

call uglifyjs^ 
    src/file1.js^ 
    src/file2.js^ 
    -cmo bundle.min.js 

Затем я использую watch, чтобы построить его, как этот

watch makebundle src 

Все очень просто. Теперь я хотел бы сделать это менее связанным с Windows процессом. Для reasons outlined here Я не хочу использовать Grunt/Gulp, и думал о попытке use npm as a build tool. Беда только в том, я не могу узнать, как настроить uglifyjs изнутри package.json

редактировать

Вот пример того, что я хотел бы работать в package.json:

{ 
    "uglifyConfig": [ 
    { 
     "outfile": "bundle.min.js, 
     "files": [ 
     "src/file1.js", 
     "src/file2.js" 
     ] 
     "config": { 
     "mangle": true, 
     "compress": true 
     } 
    } 
    ] 
} 

ответ

0

Вы можете поместить любые скрипты в раздел «скрипты» package.json.

{ 
    "name": "my-package", 
    "version": "1.0.0", 
    "main": "main.js", 
    "scripts": { 
    "ugly": "uglify", 
    "prepublish" : "uglify" 
    }, 
... 

Вы можете дать любое произвольное имя и запустить его с npm run ugly или использовать один из predefined hooks, таких как prepublish

+2

Да, но я хотел бы включить в конфигурацию для него в package.json тоже - например, что-то вроде массива js-файлов для concat/minify. – JasonC

+0

Почему бы не указать файлы по пути 'uglify lib/*'? – Gangstead

+1

Я не уверен, что я последую за тобой. Если вы имеете в виду указание glob в объекте 'scripts', то я хотел бы заказать файлы явно. – JasonC

2

Если ваш сценарий сборки сценарий узел, вы можете использовать JavaScript API уродовать вместо из API командной строки. Вы можете легко загрузить свой пакет package.json, прочитать конфигурацию и передать эти значения в Uglify.

package.json:

{ 
    ... 
    "scripts": { 
    "ugly": "node do-uglify.js" 
    } 
    ... 
} 

делать-uglify.js:

var uglify = require('uglify'); 
var package = require('./package.json'); 
var uglifyConfig = package.uglifyConfig; 
// Call the UglifyJS Javascript API, passing config from uglifyConfig 
+0

Спасибо, я могу попросить эту попытку, хотя писать собственный скрипт сборки сборки начинает утихать в целом, избегая Grunt и т. Д. Однако это имеет преимущество быть более независимым от платформы, чем мой текущий метод. – JasonC

+1

Да, но поэтому многие из нас * делают * используют Grunt. Несмотря на то, что он чувствует себя тяжелым и многословным, он преодолевает ограничения package.json, дает нам кросс-платформенное файловое подталкивание и т. Д. В ходе последующей записи в блоге, которую вы связали, автор допускает, что Unix-стиль globbing не работает в Windows , и все же его сценарии npm используют его extensively.http: //blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/ – cspotcode

+1

Я действительно ссылаюсь на этот пост, а также на мой вопрос , и я понимаю вашу точку зрения. Мне кажется странным, что никто не использовал uglify напрямую с package.json, хотя в том, что мне нужно. – JasonC