我想用bookmarklet-loader和style-loader和css-loader创建小书签。但是我无法将css导入到我的小书签中。使用webpack,bookmarklet-loader,style和css-loader创建小书签
这是我
webpack.config.js:
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 /书签工具/ 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);
只需添加小书签t o空白页面上的链接,所以我可以将链接添加到我的浏览器。
但运行webpack
产生这个错误:
SyntaxError: Unexpected token: string (./css/style.css) at [snipped] node_modules/uglify-js/tools/node.js
我尝试添加以下到我的webpack.config.js:
{
test: /\.js$/,
use: [
'bookmarklet-loader',
'style-loader',
'css-loader'
],
include: path.join(__dirname, './src/bookmarklets')
}
现在这编译罚款,但书签代码包含需要语句,所以当我尝试并在浏览器中运行时,我得到一个
Uncaught ReferenceError: require is not defined
编辑: 简单地解释问题和解决方案。我正在尝试构建一个小书签,但是我正在使用的小书签加载器用于将小书签导入其他代码段。而且,这个书签小工具加载程序并未设置为处理小书签所需的CSS和模板。我已经切换到使用一个简单的webpack配置,产生一个编译的JavaScript文件,然后this工具将其转换为书签。
这是我的情况下,如果的package.json帮助其人:
<snip>
"scripts": {
"build": "webpack && bookmarklet dist/index.js dist/bookmarklet.js && cat dist/bookmarklet.js | xclip -selection clipboard",
}
现在npm run build
构建书签,并将其复制到我的剪贴板所以我可以更新浏览器的书签。
请问为什么不直接发布自己的解决方案作为答案? – ghybs