userscript-metadata-webpack-plugin

A webpack plugin to generate userscript metadata and prepend to js

Usage no npm install needed!

<script type="module">
  import userscriptMetadataWebpackPlugin from 'https://cdn.skypack.dev/userscript-metadata-webpack-plugin';
</script>

README

userscript-metadata-webpack-plugin

userscript-metadata-webpack-plugin is a webpack plugin to generate userscript metadata and prepend to file which name matched *.user.js

when using webpack 4, install userscript-metadata-webpack-plugin==0.0.6

usage

install

npm i userscript-metadata-webpack-plugin -D

configure

webpack.config.js

const pkg = require('../package.json')
const UserScriptMetaDataPlugin = require('userscript-metadata-webpack-plugin')

let metadata = {
  name: pkg.name,
  namespace: 'https://trim21.me/',
  version: pkg.version,
  author: pkg.author,
  source: pkg.repository.url,
  supportURL: pkg.repository.url + '/issues',
  license: 'MIT',
  match: [
    'https://bgm.tv/subject/*/edit',
    'https://bangumi.tv/subject/*/edit',
  ],
  require: [
    `https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js`,
    `https://cdn.jsdelivr.net/npm/diff2html/bundles/js/diff2html.min.js`,
    `https://cdn.jsdelivr.net/npm/diff/dist/diff.min.js`,
  ],
  grant: [
    'GM_xmlhttpRequest',
  ],
  connect: [
    'example.com',
    'www.example.com',
  ],
  'resource': {
    A: 'https://resource.a',
    BB: 'https://resource.b',
  },
  'run-at': 'document-end',
}


const config = {
  // ...
  // ...
  plugins: [
    new UserScriptMetaDataPlugin({
      metadata
    })
  ]
}

module.exports = config

// ==UserScript==
// @name         userscript-metadata-webpack-plugin
// @namespace    https://trim21.me/
// @version      0.1.0
// @author       Trim21 <trim21me@gmail.com>
// @source       https://github.com/Trim21/userscript-metadata-webpack-plugin
// @supportURL   https://github.com/Trim21/userscript-metadata-webpack-plugin/issues
// @license      MIT
// @match        https://bgm.tv/subject/*/edit
// @match        https://bangumi.tv/subject/*/edit
// @require      https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/diff2html/bundles/js/diff2html.min.js
// @require      https://cdn.jsdelivr.net/npm/diff/dist/diff.min.js
// @grant        GM_xmlhttpRequest
// @connect      example.com
// @connect      www.example.com
// @A            A  https://resource.a
// @BB           BB https://resource.b
// @run-at       document-end
// ==/UserScript==

// other js code