如何让这三样东西协同工作:webpack、less 和 angular 2+?
how to get those 3 things working together: webpack, less and angular 2+?
所以我有 3 个东西:更少的样式表、webpack 和 angular2+ ts 文件。
首先我根据 https://github.com/AngularClass/angular-starter/issues/165 配置了它
起初它在我的本地环境中运行良好,但如果我将它发布到 windows 服务器上,我的 someComp.component.less 文件将无法运行。
结构:
-client app
- - app
- - - components
- - - -someComponent
- - - - -someComp.component.html
- - - - -someComp.component.ts
- - - - -someComp.component.less
在我的 someComp.component.ts 中(在样式中它有一个名为 "the type of styles are incompatible" 的错误,尽管在本地开发环境中它工作正常。
import { Component } from '@angular/core';
@Component({
selector: 'someComp',
templateUrl: './someComp.component.html',
styles: [require('./someComp.component.less')]
})
export class SomeCompComponent {
//stuff...
}
在我的 webpack.config.js 中。我不知道如何配置这个东西。
const sharedConfig = {
stats: { modules: false },
context: __dirname,
resolve: { extensions: ['.ts', '.js', '.json', '.less', '.css', '.html'] },
output: {
filename: '[name].js',
publicPath: 'dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix
},
module: {
rules: [
{ test: /\.ts$/, include: /ClientApp/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] : '@ngtools/webpack' },
{ test: /\.html$/, use: 'html-loader?minimize=false' },
{ test: /\.css$/, use: [ 'to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize' ] },
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
{
test: /\.less$/,
use: ????????????????????????????????? HOW TO CONFIG????
}
]
},
plugins: [new CheckerPlugin(), new ExtractTextPlugin('??????.css') //is this even necessary??]
};
我就是无法让这三件事一起工作。如何让这三件事一起工作?????如果我将这些东西发布到 windows 服务器上,我的 less 文件就会停止工作。如何????如何获得这些工作?????
webpack + angular 2 + less 让我很头疼。开发人员确实应该得到一些更好的结构来让它们一起工作,但不要花 2 天时间在谷歌上搜索和调整这个该死的 webpack.config.js
无论如何。
我觉得你可以做到这一点
为 webpack 安装 less loader
npm install --save-dev less-loader less
然后在我的 component.ts
import { Component } from '@angular/core';
@Component({
selector: 'someComp',
templateUrl: './someComp.component.html',
styleUrls: ['./someComp.component.less'] <---here
})
export class someCompComponent {
}
然后在我该死的 webpack.config.js
module.exports = (env) => {
// Configuration in common to both client-side and server-side bundles
const isDevBuild = !(env && env.prod);
const sharedConfig = {
stats: { modules: false },
context: __dirname,
resolve: {
extensions: ['.ts', '.js', '.json', '.less', '.css', '.html'] <-----!!!!!!here
},
output: {
filename: '[name].js',
publicPath: 'dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix
},
module: {
rules: [
{ test: /\.ts$/, include: /ClientApp/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] : '@ngtools/webpack' },
{ test: /\.html$/, use: 'html-loader?minimize=false' },
{ test: /\.css$/, use: [ 'to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize' ] },
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
{
test: /\.less$/, <-----!!!!!!here
exclude: /node_modules/, <-----!!!!!!here
loader: 'raw-loader!less-loader' <-----!!!!!!here
}
]
},
plugins: [...]
};
好吧,这在生产环境和开发环境中都适用。
所以我有 3 个东西:更少的样式表、webpack 和 angular2+ ts 文件。 首先我根据 https://github.com/AngularClass/angular-starter/issues/165 配置了它 起初它在我的本地环境中运行良好,但如果我将它发布到 windows 服务器上,我的 someComp.component.less 文件将无法运行。
结构:
-client app
- - app
- - - components
- - - -someComponent
- - - - -someComp.component.html
- - - - -someComp.component.ts
- - - - -someComp.component.less
在我的 someComp.component.ts 中(在样式中它有一个名为 "the type of styles are incompatible" 的错误,尽管在本地开发环境中它工作正常。
import { Component } from '@angular/core';
@Component({
selector: 'someComp',
templateUrl: './someComp.component.html',
styles: [require('./someComp.component.less')]
})
export class SomeCompComponent {
//stuff...
}
在我的 webpack.config.js 中。我不知道如何配置这个东西。
const sharedConfig = {
stats: { modules: false },
context: __dirname,
resolve: { extensions: ['.ts', '.js', '.json', '.less', '.css', '.html'] },
output: {
filename: '[name].js',
publicPath: 'dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix
},
module: {
rules: [
{ test: /\.ts$/, include: /ClientApp/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] : '@ngtools/webpack' },
{ test: /\.html$/, use: 'html-loader?minimize=false' },
{ test: /\.css$/, use: [ 'to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize' ] },
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
{
test: /\.less$/,
use: ????????????????????????????????? HOW TO CONFIG????
}
]
},
plugins: [new CheckerPlugin(), new ExtractTextPlugin('??????.css') //is this even necessary??]
};
我就是无法让这三件事一起工作。如何让这三件事一起工作?????如果我将这些东西发布到 windows 服务器上,我的 less 文件就会停止工作。如何????如何获得这些工作?????
webpack + angular 2 + less 让我很头疼。开发人员确实应该得到一些更好的结构来让它们一起工作,但不要花 2 天时间在谷歌上搜索和调整这个该死的 webpack.config.js
无论如何。
我觉得你可以做到这一点
为 webpack 安装 less loader
npm install --save-dev less-loader less
然后在我的 component.ts
import { Component } from '@angular/core';
@Component({
selector: 'someComp',
templateUrl: './someComp.component.html',
styleUrls: ['./someComp.component.less'] <---here
})
export class someCompComponent {
}
然后在我该死的 webpack.config.js
module.exports = (env) => {
// Configuration in common to both client-side and server-side bundles
const isDevBuild = !(env && env.prod);
const sharedConfig = {
stats: { modules: false },
context: __dirname,
resolve: {
extensions: ['.ts', '.js', '.json', '.less', '.css', '.html'] <-----!!!!!!here
},
output: {
filename: '[name].js',
publicPath: 'dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix
},
module: {
rules: [
{ test: /\.ts$/, include: /ClientApp/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] : '@ngtools/webpack' },
{ test: /\.html$/, use: 'html-loader?minimize=false' },
{ test: /\.css$/, use: [ 'to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize' ] },
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
{
test: /\.less$/, <-----!!!!!!here
exclude: /node_modules/, <-----!!!!!!here
loader: 'raw-loader!less-loader' <-----!!!!!!here
}
]
},
plugins: [...]
};
好吧,这在生产环境和开发环境中都适用。