Skip to content

Commit

Permalink
Remove webpack-userscript dependency
Browse files Browse the repository at this point in the history
After weeks of debugging Better SweClockers' dark theme feature in
collaboration with users, we realized that the problem only occurred
with Tampermonkey, not with Violentmonkey.

SimonAlling/better-sweclockers#62

However, turns out it was our fault, not Tampermonkey's: We were
emitting metadata containing

    // @run_at document-start

instead of

    // @run-at document-start

because I forgot that we used to rely on the userscript-metadata package
to replace underscores with hyphens.
  • Loading branch information
SimonAlling committed Feb 4, 2020
1 parent aedfa9c commit c8048d1
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 57 deletions.
41 changes: 0 additions & 41 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@
"userscript-metadata": "^1.0.0",
"webextension-manifest": "^1.0.0",
"webpack": "^4.41.2",
"webpack-userscript": "^2.5.1",
"yargs": "^15.0.2"
}
}
28 changes: 18 additions & 10 deletions src/build/internal/webpack-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,13 @@ import Manifest from "webextension-manifest";
import * as webpack from "webpack";
import { RawSource } from "webpack-sources";

import { BuildConfig, ENVIRONMENT_VARIABLES, EnvVarError, envVarName } from "./configuration";
import {
BuildConfig,
ENVIRONMENT_VARIABLES,
EnvVarError,
distFileName,
envVarName,
} from "./configuration";
import * as Msg from "./messages";
import { BuildConfigError } from "./validation";

Expand All @@ -17,7 +23,7 @@ export class UserscripterWebpackPlugin {
envVarErrors: readonly EnvVarError[]
envVars: ReadonlyArray<readonly [string, string | undefined]>
manifest?: Manifest
metadataAssetName: string
metadataStringified: string
metadataValidationResult: Metadata.ValidationResult<Metadata.Metadata>
overriddenBuildConfig: BuildConfig
verbose: boolean
Expand All @@ -28,22 +34,24 @@ export class UserscripterWebpackPlugin {
buildConfigErrors,
envVarErrors,
envVars,
metadataAssetName,
metadataStringified,
metadataValidationResult,
manifest,
overriddenBuildConfig,
verbose,
} = this.x;
if (manifest !== undefined) {
compiler.hooks.afterCompile.tap(
UserscripterWebpackPlugin.name,
compilation => {
const metadataAssetName = distFileName(overriddenBuildConfig.id, "meta");
compiler.hooks.afterCompile.tap(
UserscripterWebpackPlugin.name,
compilation => {
compilation.assets[metadataAssetName] = new RawSource(metadataStringified);
if (manifest !== undefined) {
compilation.assets[MANIFEST_FILE] = new RawSource(
JSON.stringify(manifest, null, MANIFEST_INDENTATION)
);
},
);
}
}
},
);
compiler.hooks.afterEmit.tap(
UserscripterWebpackPlugin.name,
compilation => {
Expand Down
10 changes: 5 additions & 5 deletions src/build/internal/webpack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import TerserPlugin from "terser-webpack-plugin";
import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin";
import * as Metadata from "userscript-metadata";
import * as webpack from "webpack";
import WebpackUserscriptPlugin from "webpack-userscript";

import {
BuildConfig,
Expand Down Expand Up @@ -96,6 +95,7 @@ export function createWebpackConfig(x: WebpackConfigParameters): webpack.Configu
version: finalVersion(unfinishedManifest.version),
};
})();
const finalMetadataStringified = Metadata.stringify(finalMetadata);
// tslint:disable:object-literal-sort-keys
return {
mode: mode,
Expand Down Expand Up @@ -187,15 +187,15 @@ export function createWebpackConfig(x: WebpackConfigParameters): webpack.Configu
buildConfigErrors: buildConfigErrors(overridden.buildConfig),
envVarErrors: overridden.errors,
envVars: envVars(x.env),
metadataStringified: finalMetadataStringified,
metadataValidationResult: Metadata.validateWith(x.metadataSchema)(finalMetadata),
metadataAssetName: distFileName(overridden.buildConfig.id, "meta"),
manifest: finalManifest,
overriddenBuildConfig: overridden.buildConfig,
verbose: verbose,
}),
new WebpackUserscriptPlugin({
metajs: true,
headers: finalMetadata,
new webpack.BannerPlugin({
banner: finalMetadataStringified,
raw: true,
}),
],
optimization: {
Expand Down

0 comments on commit c8048d1

Please sign in to comment.