114 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| validate-npm-package-license
 | |
| ============================
 | |
| 
 | |
| Give me a string and I'll tell you if it's a valid npm package license string.
 | |
| 
 | |
| ```javascript
 | |
| var valid = require('validate-npm-package-license');
 | |
| ```
 | |
| 
 | |
| SPDX license identifiers are valid license strings:
 | |
| 
 | |
| ```javascript
 | |
| 
 | |
| var assert = require('assert');
 | |
| var validSPDXExpression = {
 | |
|   validForNewPackages: true,
 | |
|   validForOldPackages: true,
 | |
|   spdx: true
 | |
| };
 | |
| 
 | |
| assert.deepEqual(valid('MIT'), validSPDXExpression);
 | |
| assert.deepEqual(valid('BSD-2-Clause'), validSPDXExpression);
 | |
| assert.deepEqual(valid('Apache-2.0'), validSPDXExpression);
 | |
| assert.deepEqual(valid('ISC'), validSPDXExpression);
 | |
| ```
 | |
| The function will return a warning and suggestion for nearly-correct license identifiers:
 | |
| 
 | |
| ```javascript
 | |
| assert.deepEqual(
 | |
|   valid('Apache 2.0'),
 | |
|   {
 | |
|     validForOldPackages: false,
 | |
|     validForNewPackages: false,
 | |
|     warnings: [
 | |
|       'license should be ' +
 | |
|       'a valid SPDX license expression (without "LicenseRef"), ' +
 | |
|       '"UNLICENSED", or ' +
 | |
|       '"SEE LICENSE IN <filename>"',
 | |
|       'license is similar to the valid expression "Apache-2.0"'
 | |
|     ]
 | |
|   }
 | |
| );
 | |
| ```
 | |
| 
 | |
| SPDX expressions are valid, too ...
 | |
| 
 | |
| ```javascript
 | |
| // Simple SPDX license expression for dual licensing
 | |
| assert.deepEqual(
 | |
|   valid('(GPL-3.0-only OR BSD-2-Clause)'),
 | |
|   validSPDXExpression
 | |
| );
 | |
| ```
 | |
| 
 | |
| ... except if they contain `LicenseRef`:
 | |
| 
 | |
| ```javascript
 | |
| var warningAboutLicenseRef = {
 | |
|   validForOldPackages: false,
 | |
|   validForNewPackages: false,
 | |
|   spdx: true,
 | |
|   warnings: [
 | |
|     'license should be ' +
 | |
|     'a valid SPDX license expression (without "LicenseRef"), ' +
 | |
|     '"UNLICENSED", or ' +
 | |
|     '"SEE LICENSE IN <filename>"',
 | |
|   ]
 | |
| };
 | |
| 
 | |
| assert.deepEqual(
 | |
|   valid('LicenseRef-Made-Up'),
 | |
|   warningAboutLicenseRef
 | |
| );
 | |
| 
 | |
| assert.deepEqual(
 | |
|   valid('(MIT OR LicenseRef-Made-Up)'),
 | |
|   warningAboutLicenseRef
 | |
| );
 | |
| ```
 | |
| 
 | |
| If you can't describe your licensing terms with standardized SPDX identifiers, put the terms in a file in the package and point users there:
 | |
| 
 | |
| ```javascript
 | |
| assert.deepEqual(
 | |
|   valid('SEE LICENSE IN LICENSE.txt'),
 | |
|   {
 | |
|     validForNewPackages: true,
 | |
|     validForOldPackages: true,
 | |
|     inFile: 'LICENSE.txt'
 | |
|   }
 | |
| );
 | |
| 
 | |
| assert.deepEqual(
 | |
|   valid('SEE LICENSE IN license.md'),
 | |
|   {
 | |
|     validForNewPackages: true,
 | |
|     validForOldPackages: true,
 | |
|     inFile: 'license.md'
 | |
|   }
 | |
| );
 | |
| ```
 | |
| 
 | |
| If there aren't any licensing terms, use `UNLICENSED`:
 | |
| 
 | |
| ```javascript
 | |
| var unlicensed = {
 | |
|   validForNewPackages: true,
 | |
|   validForOldPackages: true,
 | |
|   unlicensed: true
 | |
| };
 | |
| assert.deepEqual(valid('UNLICENSED'), unlicensed);
 | |
| assert.deepEqual(valid('UNLICENCED'), unlicensed);
 | |
| ```
 |