无法渲染 primeNG css 因为升级 webpack 已经升级并且 Angular 4
Unable to render primeNG css since upgrade webpack has upgraded and Angular 4
我无法为 primeNG 渲染 css。我的 css 在我的项目中覆盖了它,或者它甚至没有被调用。
我尝试在 index.html
中导入样式,在组件和 stylesUrl []
中导入它们。一切都不起作用,我现在知道问题出在我的 webpack.config.js
文件中。我已经安装:
npm install file-loader --save
并从此 post post 开始执行以下步骤:
不过我没有成功。
webpack.config.js
var merge = require('merge-deep');
var path = require('path');
var common = {
devtool: 'source-map',
cache: false,
entry: {
},
output: {
path: root('dist'),
filename: '[name].js',
},
resolve: {
// ensure loader extensions match
extensions: ['','.ts','.js','.json']
},
module: {
loaders: [
// Support for .ts files.
{
test: /\.ts$/,
loader: 'ts-loader',
exclude: [ /\.(node|worker)\.ts$/, /node_modules/ ]
}
],
}
};
module.exports = [
merge(common, {
target: 'web',
entry: {
'browser': root('./index.js')
},
output: {
},
resolve: {
packageAlias: 'web',
},
node: {
crypto: false,
console: false,
process: false,
global: false,
buffer: false
}
}),
merge(common, {
target: 'node',
entry: {
'node': root('./index.node.js'),
},
output: {
libraryTarget: 'commonjs'
},
resolve: {
packageAlias: 'server',
}
})
]
function root(args) {
args = Array.prototype.slice.call(arguments, 0);
return path.join.apply(path, [__dirname].concat(args));
}
我在 Angular 2.4 上遇到了同样的问题(准备很快迁移到 Angular4)。这是我 webpack.js
中 sharedConfig 下的模块
module: {
exprContextCritical: false,
rules: [
{ test: /\.ts$/, include: /ClientApp/, use: ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] },
{ test: /\.html$/, use: 'html-loader?minimize=false' },
//{ test: /\.(png|jpg|jpeg|gif|svg)$/, loader: 'url', query: { limit: 25000 } },
{ test: /\.(png|gif|woff|woff2|eot|ttf|svg)(\?|$)/, loader: 'url-loader?limit=100000' },
{
test: /\.scss$/,
loaders: ["style-loader", "css-loader", "sass-loader"]
},
{ //this rule will only be used for any vendors
test: /\.(css|woff|ttf|eot|svg)$/,
loaders: ['style-loader', 'css-loader'],
include: [/node_modules/]
},
{
test: /\.css$/,
loaders: ['to-string-loader', 'css-loader']
//,exclude: [/node_modules/] //add this line so we ignore css coming from node_modules
}
]
},
我还在 webpack.config.vendor.js
下的供应商中添加了以下内容
'bootstrap/dist/css/bootstrap.css',
'font-awesome/css/font-awesome.css',
'primeng/primeng',
'primeng/resources/themes/omega/theme.css',
'primeng/resources/primeng.min.css'
我最终转向 Angular-CLI,将我需要的 css 文件放入 .angular-cli.json 文件中,它起作用了。
"styles": [
"../node_modules/primeng/resources/themes/omega/theme.css",
"../node_modules/primeng/resources/primeng.css",
"styles.css"
],
我无法为 primeNG 渲染 css。我的 css 在我的项目中覆盖了它,或者它甚至没有被调用。
我尝试在 index.html
中导入样式,在组件和 stylesUrl []
中导入它们。一切都不起作用,我现在知道问题出在我的 webpack.config.js
文件中。我已经安装:
npm install file-loader --save
并从此 post post 开始执行以下步骤:
不过我没有成功。
webpack.config.js
var merge = require('merge-deep');
var path = require('path');
var common = {
devtool: 'source-map',
cache: false,
entry: {
},
output: {
path: root('dist'),
filename: '[name].js',
},
resolve: {
// ensure loader extensions match
extensions: ['','.ts','.js','.json']
},
module: {
loaders: [
// Support for .ts files.
{
test: /\.ts$/,
loader: 'ts-loader',
exclude: [ /\.(node|worker)\.ts$/, /node_modules/ ]
}
],
}
};
module.exports = [
merge(common, {
target: 'web',
entry: {
'browser': root('./index.js')
},
output: {
},
resolve: {
packageAlias: 'web',
},
node: {
crypto: false,
console: false,
process: false,
global: false,
buffer: false
}
}),
merge(common, {
target: 'node',
entry: {
'node': root('./index.node.js'),
},
output: {
libraryTarget: 'commonjs'
},
resolve: {
packageAlias: 'server',
}
})
]
function root(args) {
args = Array.prototype.slice.call(arguments, 0);
return path.join.apply(path, [__dirname].concat(args));
}
我在 Angular 2.4 上遇到了同样的问题(准备很快迁移到 Angular4)。这是我 webpack.js
中 sharedConfig 下的模块module: {
exprContextCritical: false,
rules: [
{ test: /\.ts$/, include: /ClientApp/, use: ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] },
{ test: /\.html$/, use: 'html-loader?minimize=false' },
//{ test: /\.(png|jpg|jpeg|gif|svg)$/, loader: 'url', query: { limit: 25000 } },
{ test: /\.(png|gif|woff|woff2|eot|ttf|svg)(\?|$)/, loader: 'url-loader?limit=100000' },
{
test: /\.scss$/,
loaders: ["style-loader", "css-loader", "sass-loader"]
},
{ //this rule will only be used for any vendors
test: /\.(css|woff|ttf|eot|svg)$/,
loaders: ['style-loader', 'css-loader'],
include: [/node_modules/]
},
{
test: /\.css$/,
loaders: ['to-string-loader', 'css-loader']
//,exclude: [/node_modules/] //add this line so we ignore css coming from node_modules
}
]
},
我还在 webpack.config.vendor.js
下的供应商中添加了以下内容'bootstrap/dist/css/bootstrap.css',
'font-awesome/css/font-awesome.css',
'primeng/primeng',
'primeng/resources/themes/omega/theme.css',
'primeng/resources/primeng.min.css'
我最终转向 Angular-CLI,将我需要的 css 文件放入 .angular-cli.json 文件中,它起作用了。
"styles": [
"../node_modules/primeng/resources/themes/omega/theme.css",
"../node_modules/primeng/resources/primeng.css",
"styles.css"
],