【发布时间】:2021-10-26 16:45:21
【问题描述】:
我的 Visual Studio Code 扩展使用节点模块 highlight.js,它带有一个充满 CSS 文件的文件夹。这些为语法着色提供了配色方案。有必要捆绑一些 CSS 文件。
这是关于捆绑资产
目标是捆绑一个 CSS 文件并在运行时以字符串形式访问文件内容。如果可以在没有导入语句的情况下实现,那将是完美的。通常,如何访问捆绑文件的内容将是一个单独的问题,但我觉得内容检索和应该如何捆绑资产密切相关。
我坦率地承认对 WebPack 的了解很薄弱。
到目前为止的故事
捆绑器在package.json 中指定为"webpack": "^5.4.0",但我不知道如何确定实际存在的内容。可以想象我的设置有问题:当我尝试在项目文件夹中的命令提示符下运行webpack --version 时,它会响应
CLI for webpack must be installed.
webpack-cli (https://github.com/webpack/webpack-cli)
We will use "npm" to install the CLI via "npm install -D webpack-cli".
Do you want to install 'webpack-cli' (yes/no):
第一次发生这种情况时,我回答是。经过一阵安装和另一次尝试,同样的事情发生了。但是,vsce package 使用 webpack 进行生产构建并按下 F5 调试成功将开发构建放在 dist 文件夹中,并带有一个我可以检查的未压缩文件(这就是我知道下面提到的文件的方式)正在捆绑中)。
从那里继续我已经修改了webpack.config.js 像这样
//@ts-check
'use strict';
const path = require('path');
/**@type {import('webpack').Configuration}*/
const config = {
target: 'node', // vscode extensions run in a Node.js-context -> https://webpack.js.org/configuration/node/
entry: './src/extension.ts', // the entry point of this extension, -> https://webpack.js.org/configuration/entry-context/
output: {
// the bundle is stored in the 'dist' folder (check package.json), -> https://webpack.js.org/configuration/output/
path: path.resolve(__dirname, 'dist'),
filename: 'extension.js',
libraryTarget: 'commonjs2',
devtoolModuleFilenameTemplate: '../[resource-path]'
},
devtool: 'source-map',
externals: {
vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, -> https://webpack.js.org/configuration/externals/
},
resolve: {
// support reading TypeScript and JavaScript files, -> https://github.com/TypeStrong/ts-loader
extensions: ['.ts', '.js', '.css']
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
use: [
{
loader: 'ts-loader'
}
]
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
};
module.exports = config;
如您所见,CSS 有规则和加载器。
当我添加这个导入时
import "../node_modules/highlight.js/styles/atelier-dune-light.css";
webpack 愉快地构建了包,当我检查它时,我可以找到捆绑的 CSS。
但是,当我尝试在扩展调试主机中加载扩展时,它无法加载,并显示此消息。
激活扩展“pdconsec.vscode-print”失败:文档未定义。
对捕获的异常启用中断会显示这个相当令人惊讶的异常。
Exception has occurred: Error: Cannot find module 'supports-color'
Require stack:
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\node_modules.asar\get-uri\node_modules\debug\src\node.js
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\node_modules.asar\get-uri\node_modules\debug\src\index.js
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\node_modules.asar\get-uri\dist\index.js
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\node_modules.asar\vscode-proxy-agent\out\agent.js
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\node_modules.asar\vscode-proxy-agent\out\index.js
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\out\bootstrap-amd.js
- c:\Users\Peter\AppData\Local\Programs\Microsoft VS Code\resources\app\out\bootstrap-fork.js
好的,所以激活失败,因为加载器被吐了。但是 WTF 导入 CSS 和 support-color 有关系吗?
删除导入,它运行得很好。我真的不知道如何回应这个;我不清楚为什么对样式表的需求会导致该错误。在这一点上,我向其他人寻求指导和建议。
【问题讨论】:
-
你看过this issue上的建议了吗?
-
您寄予厚望,但实际上我是从他们建议的设置开始的。加载程序错误阻止我的扩展程序启动。就是说,谢谢 - 我要补充这个问题。
标签: node.js typescript webpack vscode-extensions