#javascript #css #angularjs #webpack #webpack-style-loader
#javascript #css #angularjs #webpack #загрузчик в стиле webpack
Вопрос:
Я пытаюсь импортировать свой css в свой пакет webpack.
Мы создаем приложение angular 1 и объединяем его с webpack. На данный момент все было в порядке. В html есть скрипты bunlde и поставщика. Включены другие js, а представления скопированы и включены.
На этом шаге мы пытаемся включить файл css, который мы создаем в styles / папку. Что касается выходных данных, я предполагаю, что файл css обрабатывается css-loader, но загрузчик стилей не включил файл css в тег.
Кто-нибудь может дать мне подсказку?
Мой webpack.config в правилах выглядит следующим образом.
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
const webpack = require ('webpack'); module.exports = {
mode: 'development',
entry: {
vendor: ['angular', '@uirouter/angularjs'],
app: './src/index.js'
},
devtool: 'inline-source-map',
devServer: {
contentBase: 'dist',
hot: true,
inline: true,
open:'chrome',
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
title: 'Output Management',
template: './src/index.html',
}),
new webpack.HotModuleReplacementPlugin(),
new CopyWebpackPlugin([
{
from: './src/views/**/*',
to: ''
},
], {
ignore: [],
copyUnmodified: true
})
],
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /.html$/,
use: {
loader: 'html-loader',
options: {
attrs:[
':data-src'
]
}
}
}
]
}
};
Мой index.html является
<!doctype html>
<html>
<head>
<title>Getting Started</title>
</head>
<body>
<a ui-sref="about" ui-sref-active="active">About</a>
<ui-view></ui-view>
</body>
</html>
Мой index.js похоже на это:
import first_controller from './controllers/first_controller.js';
import uiRouter from '@uirouter/angularjs';
//import css from './styles/main.css'; // I try this also
import './styles/main.css'; //This isn't working either.
var app = angular.module ('app', ['ui.router']);
app.controller ('first_controller', first_controler);
app.config(function($stateProvider) {
var exampleState = {
name: 'example',
url: '/example',
templateUrl: './src/views/example.html', }
$stateProvider.state(exampleState );
});
мой css в папке /styles / main
.example_css {
color: red;
}
И пример представления:
<div class="example_css">Example</div>
Мой package.json является:
{
"name": "Example",
"version": "1.0.0",
"main": "webpack.config.js",
"scripts": {
"build": "webpack --colors",
"start": "webpack-dev-server --progress --colors --watch --inline --open"
},
"devDependencies": {
"angular": "^1.7.7",
"clean-webpack-plugin": "^2.0.0",
"copy-webpack-plugin": "^5.0.0",
"css-loader": "^2.1.1",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^0.23.1",
"webpack": "^4.29.6",
"webpack-cli": "^3.2.3",
"webpack-dev-server": "^3.2.1"
},
"dependencies": {
"@uirouter/angularjs": "^1.0.22"
}
}
Комментарии:
1. Просто комментарий с использованием «npm run start», который запускает сервер разработки, работает нормально, и проверка DOM показывает css, включенный в <head> . При запуске «npm run build», когда не удается включить css в index.html сгенерировано.
Ответ №1:
В зависимости от версии вашего веб-пакета вы хотите использовать extract-text-webpack-plugin или mini-css-extract-plugin для помещения стилей в файл.
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
module: {
rules: [
{
test: /.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}
]
},
plugins: [
new ExtractTextPlugin("styles.css"),
]
}
Чтобы включить путь к файлу CSS в index.html
при сборке — смотрите, как создавать шаблоны с помощью HtmlWebpackPlugin.