Mic*_*ers 3 css webpack vue.js .net-core
目前我正在尝试设置一个启用了 webpack 4 的基本 Vue 项目。vue 框架基于 Microsoft SPA 模板 dotnet 核心。似乎一切都运行良好,除了外部 CSS 文件以某种方式没有加载到项目中,现在它困扰了我很长一段时间,问题是为什么这些 CSS 文件没有加载。
我基本上做的是“dotnet new vue”(您需要安装 Microsoft SPA 模板),在创建项目后,我开始更新包。目前我有以下 package.json 文件:
{
"name": "Dashboard",
"private": true,
"version": "0.0.1",
"scripts": {
"build:development": "webpack"
},
"devDependencies": {
"@types/webpack-env": "^1.13.6",
"ajv": "^6.5.2",
"aspnet-webpack": "^3.0.0",
"awesome-typescript-loader": "^5.2.0",
"bootstrap": "^4.1.1",
"coa": "^2.0.1",
"css-loader": "^1.0.0",
"event-source-polyfill": "^0.0.12",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^1.1.11",
"isomorphic-fetch": "^2.2.1",
"jquery": "^3.3.1",
"mini-css-extract-plugin": "^0.4.1",
"popper.js": "^1.14.3",
"style-loader": "^0.21.0",
"typescript": "^2.9.2",
"url-loader": "^1.0.1",
"vue": "^2.5.16",
"vue-loader": "^15.2.4",
"vue-property-decorator": "^7.0.0",
"vue-router": "^3.0.1",
"vue-style-loader": "^4.1.0",
"vue-template-compiler": "^2.5.16",
"webpack": "^4.16.0",
"webpack-cli": "^3.0.8",
"webpack-dev-middleware": "^3.1.3",
"webpack-hot-middleware": "^2.22.2",
"webpack-merge": "^4.1.3",
"webpack-node-externals": "^1.7.2"
},
"dependencies": {}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 webpack.config.file:
const path = require('path');
const webpack = require('webpack');
const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin;
const bundleOutputDir = './wwwroot/dist';
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
mode: 'development',
stats: {
modules: false
},
context: __dirname,
resolve: {
extensions: [ '.js', '.ts' ]
},
entry: {
'main': './ClientApp/boot.ts'
},
module: {
rules: [
{
test: /\.vue\.html$/,
include: /ClientApp/,
loader: 'vue-loader',
options: { loaders: { js: 'awesome-typescript-loader?silent=true' } }
},
{
test: /\.ts$/,
include: /ClientApp/,
use: 'awesome-typescript-loader?silent=true'
},
{
test: /\.css$/,
use: ['vue-style-loader', 'css-loader']
},
{
test: /\.(png|jpg|jpeg|gif|svg)$/,
use: 'url-loader?limit=25000'
}
]
},
output: {
path: path.join(__dirname, bundleOutputDir),
filename: '[name].js',
publicPath: 'dist/'
},
plugins: [
new VueLoaderPlugin(),
new CheckerPlugin(),
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"'
}
}),
new webpack.DllReferencePlugin({
context: __dirname,
manifest: require('./wwwroot/dist/vendor-manifest.json')
}),
new webpack.SourceMapDevToolPlugin({
filename: '[file].map',
moduleFilenameTemplate: path.relative(bundleOutputDir, '[resourcePath]')
})
]
};
Run Code Online (Sandbox Code Playgroud)
我通过以下方式包含了 CSS 文件:
在 app.ts 中(我添加它们只是为了测试):
import '../navmenu/navmenu.css';
require('../navmenu/navmenu.css');
Run Code Online (Sandbox Code Playgroud)
在 boot.ts
import './components/navmenu/navmenu.css';
require('./components/navmenu/navmenu.css');
Run Code Online (Sandbox Code Playgroud)
或者在原始文件(navmenu.vue.html)中(当一个默认的SPA骨架已经生成时):
<style src="./navmenu.css" />
Run Code Online (Sandbox Code Playgroud)
在所有这些位置,前端不包含/使用 css 文件。我还在 webpack.config 文件中尝试了不同的方法,例如使用 extract-text-webpack-plugin。
背后的基本思想是 Microsoft 的 SPA 模板正在使用 Webpack 2(以及其他不同包的旧版本),我正在尝试将它们更新到最新版本。
希望有人可以帮助我:-)
我已经想通了。不知何故,webpack 4 并没有自行获取 CSS 文件。您需要先安装以下插件:
MiniCssExtractPlugin
之后在 webpack 配置中添加以下配置:
{
test: /\.(s*)[a|c]ss$/,
use: [
"vue-style-loader",
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader"
]
}
Run Code Online (Sandbox Code Playgroud)
并将迷你 css 提取插件也添加到插件部分:
new MiniCssExtractPlugin({
filename: "[name].css"
})
Run Code Online (Sandbox Code Playgroud)
你应该很高兴去!
归档时间: |
|
查看次数: |
3055 次 |
最近记录: |