Ich versuche ein Bookmarklet mit bookmarklet-loader und dem Style-Loader und css-loader zu erstellen. Aber ich habe Probleme beim Importieren von CSS in mein Bookmarklet.Erstellen eines Bookmarklet mit webpack, bookmarklet-loader, style und css-loader
Dies ist, was ich
webpack.config.js haben:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
entry: {
index: './src/index.js',
bookmarklet: './src/bookmarklets/bookmarklet.js'
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
target: 'web',
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
},
{
test: /\.js$/,
use: [
'bookmarklet-loader'
],
include: path.join(__dirname, './src/bookmarklets')
}
]
},
plugins: [
new CleanWebpackPlugin(['dist']),
new HtmlWebpackPlugin({
title: 'Development'
})
]
src/Bookmarklets/bookmarklet.js:
import './css/style.css';
/* the rest of my bookmarklet code */
src/index.js:
import bookmarklet from './bookmarklets/bookmarklet';
var add = document.createElement("a");
add.href = "javascript:" + bookmarklet;
add.innerHTML = "Click me";
document.body.appendChild(add);
Fügt einfach das Bookmarklet t hinzu o ein Link auf einer leeren Seite, damit ich den Link zu meinem Browser hinzufügen kann.
Aber webpack
läuft erzeugt diesen Fehler:
SyntaxError: Unexpected token: string (./css/style.css) at [snipped] node_modules/uglify-js/tools/node.js
Ich habe versucht, die folgenden meiner webpack.config.js fügte hinzu:
{
test: /\.js$/,
use: [
'bookmarklet-loader',
'style-loader',
'css-loader'
],
include: path.join(__dirname, './src/bookmarklets')
}
Das jetzt kompiliert gut, aber der Bookmarklet-Code enthält require statements, also wenn ich es im Browser starte und erhalte ich eine
Uncaught ReferenceError: require is not defined
Ich habe this und this gefunden, aber es konnte nicht funktionieren.
Bearbeiten: Um einfach die Frage und Lösung zu erklären. Ich versuche, ein Bookmarklet zu erstellen, aber der Bookmarklet-Loader, den ich verwende, wird zum Importieren von Bookmarklets in andere Codeabschnitte verwendet. Und dieser Bookmarklet-Loader ist insbesondere nicht eingerichtet, CSS und Templates zu verarbeiten, die für das Bookmarklet benötigt werden. Ich habe zu einer einfachen Webpack-Konfiguration gewechselt, die eine kompilierte Javascript-Datei erstellt und dann this Werkzeug, um das zu einem Bookmarklet zu konvertieren.
Das ist mein package.json im Falle, wenn seine Hilfe an jedermann:
<snip>
"scripts": {
"build": "webpack && bookmarklet dist/index.js dist/bookmarklet.js && cat dist/bookmarklet.js | xclip -selection clipboard",
}
Jetzt npm run build
baut das Bookmarklet und kopiert ihn in meine Zwischenablage, so kann ich das Bookmarklet im Browser aktualisieren.
Bitte, warum postest du deine eigene Lösung nicht direkt als Antwort? – ghybs