uglify-save-license 0.4.1

License detector for UglifyJS

Homepage: https://github.com/shinnn/uglify-save-license

Platform: npm

Language: JavaScript

License: MIT

Keywords: uglify, compression, minification, comment, license, copyright, detection, preservation, banner

View on registry: https://www.npmjs.com/package/uglify-save-license

Direct download link: https://registry.npmjs.org/uglify-save-license/-/uglify-save-licens...

Install: npm install [email protected]


uglify-save-license

NPM version Build Status devDependency Status

A support module for UglifyJS to detect and preserve license comments

//     Backbone.js 1.1.2

//     (c) 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
//     Backbone may be freely distributed under the MIT license.
//     For all details and documentation:
//     http://backbonejs.org

(function(root, factory) {

  // Set up Backbone appropriately for the environment. Start with AMD.
  if (typeof define === 'function' && define.amd) {
    define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
//...

//     Backbone.js 1.1.2
//     (c) 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
//     Backbone may be freely distributed under the MIT license.
//     For all details and documentation:
//     http://backbonejs.org
!function(a,b){if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(c,d,e){a.Backbone=b(a,e,c,d)});else if("undefined"!=typeof exports){...

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.

Installation

Install with npm. (Make sure you have installed Node.)

npm install --save-dev uglify-save-license

Usage

First of all, load 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 it works

uglify-save-license checks each comment token of a 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 regexp for license statement matches the string of the comment. It matches, for example, MIT and Copyright.
  3. There is a comment at the previous line, and it matches 1. 2. or 3.

Used by

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

Acknowledgements

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

License

Copyright (c) 2013 - 2014 Shinnosuke Watanabe

Licensed under the MIT license.

Releases

  • 0.4.1 - May 01, 2014 15:21
  • 0.4.0 - March 07, 2014 01:34
  • 0.3.0 - February 27, 2014 09:45
  • 0.2.2 - January 20, 2014 01:44
  • 0.2.1 - January 06, 2014 14:45
  • 0.1.5 - January 06, 2014 14:40
  • 0.1.4 - January 06, 2014 02:12
  • 0.1.3 - January 06, 2014 02:06
  • 0.1.2 - December 25, 2013 21:23
  • 0.1.1 - December 25, 2013 20:59
See all 14 releases

Project Statistics

SourceRank 18
Dependencies 0
Dependent projects 125
Dependent repositories 4.7K
Total releases 14
Latest release
First release
Stars 36
Forks 6
Watchers 3
Contributors 1
Repo Size: 512 KB

Top Contributors See all

Shinnosuke Watanabe

Something wrong with this page? Make a suggestion

Export .ABOUT file for this library

Last synced: 2016-10-13 10:46:54 UTC

Login to resync this project