2015-07-21 44 views
4

目前,在开发Wordpress主题时,我使用一个简单的批处理文件来丑化我的js。 一个例子批处理文件makebundle.bat如何从package.json配置uglifyjs

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 hooksprepublish

+2

是的,但我想包括的package.json它的配置太 - 例如像一个js文件的数组concat/minify。 – JasonC

+0

为什么不通过路径'uglify lib/*'指定文件? – Gangstead

+1

我不知道我跟着你。如果你的意思是在'scripts'对象中指定一个glob,那么我想明确地命令这些文件。 – JasonC

2

如果您的构建脚本节点脚本,你可以用丑化的JavaScript API,而不是命令行API。您可以轻松地将require() 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风格的通配符在Windows上不起作用,但他的npm脚本广泛使用它.http://blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool/ – cspotcode

+1

我链接到该帖子以及在我的问题,我明白你的观点。尽管没有人直接使用uglify与package.json,但我确实觉得很奇怪,就像我以后一样。 – JasonC