Socket
Socket
Sign inDemoInstall

uglify-save-license

Package Overview
Dependencies
0
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    uglify-save-license

Tiny license detector module for UglifyJS's 'comments' option


Version published
Weekly downloads
103K
increased by2.73%
Maintainers
1
Install size
9.74 kB
Created
Weekly downloads
 

Readme

Source

uglify-save-license

NPM version Build Status devDependency Status Bitdeli Badge

Tiny license detector for UglifyJS

Overview

This module enables us to preserve license comments when using UglifyJS.

Even if the license statement is in multiple line comments, or the comment has no directive such as @license and /*!, this module keeps them readable.

uglify-save-license is inspired by grunt-license-saver and I used it as reference. Thanks, kyo-ago.

Installation

npm install uglify-save-license

Make sure you have installed Node before running this command.

Usage

First of all, load the uglify-save-license module.

var saveLicense = require('uglify-save-license');

Use with UglifyJS

Pass this module to the comments option.

var result = UglifyJS.minify('file1.js', {
  output: {
    comments: saveLicense
  }
});

Use with grunt-contrib-uglify

Pass this module to the preserveComments option.

grunt.initConfig({
  uglify: {
    my_target: {
      options: {
        preserveComments: saveLicense
      },    
      src: ['src/app.js'],
      dest: 'dest/app.min.js' 
    }
  }
});

How does it works

uglify-save-license checks each comment node of JavaScript file. The comment will be regarded as a license statement and preserved after compression, if it meets at least one of the following requirements:

  1. The comment is in the first line of a file.
  2. The regular expression for license statements matches the comment string. The regexp matches, for example, MIT and Copyright. (See the source code for details.)
  3. There is a comment at the previous line, and it matches 1. 2. or 3.

Examples

CLI tool example

Main script (uglify-example.js)
#!/usr/bin/env node

var UglifyJS    = require('uglify-js'),
    saveLicense = require('uglify-save-license');

var minified = UglifyJS.minify(process.argv[2], {
  output: {
    comments: saveLicense
  }
}).code;

console.log(minified);
Target file
// First line

// (c) 2014 John  <- contains '(c)'
// The previous line is preserved

// This line won't be preserved.
(function(win, doc) {
  var str = 'Hello World! :' + doc.title;

  // This line will not, too.
  console.log(str);
}(window, document));
Command
node uglify-example.js <target filename>
Output
// First line
// (c) 2014 John  <- contains '(c)'
// The previous line is preserved
!function(o,l){var n="Hello World! :"+l.title;console.log(n)}(window,document);

Gruntfile.coffee example

module.exports = (grunt) ->

  grunt.loadNpmTasks 'grunt-contrib-uglify'
  grunt.loadNpmTasks 'grunt-contrib-concat'
  grunt.loadNpmTasks 'grunt-contrib-clean'
  
  grunt.initConfig
    uglify:
      target:
        options:
          preserveComments: require 'uglify-save-license'
        files: [
          expand: true
          flatten: true
          cwd: 'path/to/src'
          src: ["**/*.js"]
          dest: 'tmp/'
        ]

    concat:
      js:
        src: ['tmp/*.js']
        dest: 'path/to/build/app.js'

    clean:
      tmpdir: ['tmp']

  grunt.registerTask 'default' ['uglify', 'concat', 'clean']

License

Copyright (c) 2013 - 2014 Shinnosuke Watanabe All rights reserved.

Licensed under the MIT license.

Keywords

FAQs

Last updated on 06 Jan 2014

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc