【问题标题】:How can I configure uglifyjs from package.json如何从 package.json 配置 uglifyjs
【发布时间】:2015-10-11 06:49:27
【问题描述】:

目前,在开发 Wordpress 主题时,我使用一个简单的批处理文件来丑化我的 js。 一个示例批处理文件makebundle.bat

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
      }
    }
  ]
}

【问题讨论】:

    标签: javascript node.js watch uglifyjs package.json


    【解决方案1】:

    如果您的构建脚本是节点脚本,您可以使用 Uglify 的 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
    

    【讨论】:

    • 谢谢,我可以试一试,尽管编写我自己的构建脚本开始在避免 Grunt 等的整个点上吃掉它。它确实具有比平台更独立的好处不过,我目前的方法。
    • 是的,但这就是为什么我们这么多人确实使用 Grunt。尽管感觉沉重和冗长,但它克服了 package.json 的限制,为我们提供了跨平台文件通配等。在您链接的博客文章的后续内容中,作者承认 Unix 风格的通配在 Windows 上不起作用,但他的 npm 脚本广泛使用它。blog.keithcirkel.co.uk/how-to-use-npm-as-a-build-tool
    • 我在我的问题中也确实链接到该帖子,我同意你的观点。我确实觉得很奇怪,尽管没有人按照我所追求的方式直接将 uglify 与 package.json 一起使用。
    • 对不起,我的错,我没有看到你链接了两个帖子。
    【解决方案2】:

    您可以将任何您想要的脚本放在package.json 的“脚本”部分。

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

    您可以给它任意名称并使用npm run ugly 运行它或使用predefined hooks 之一,例如prepublish

    【讨论】:

    • 是的,但我也想在 package.json 中包含它的配置 - 例如类似于要连接/缩小的 js 文件数组。
    • 为什么不通过路径uglify lib/*指定文件?
    • 我不确定我是否关注你。如果您的意思是在 scripts 对象中指定一个 glob,那么我想明确地对文件进行排序。
    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2022-01-14
    • 2016-07-18
    • 2017-09-05
    相关资源
    最近更新 更多