我从jHipster生成了一个项目,但它使用了ng-bootstrap。我需要使用Bootstrap 3,因为我的团队已经设计了一个使用它的界面。所以我正在尝试设置ng2-bootstrap。以下是我的webpack.common.js和webpack.vendor.js文件。
webpack.vendor.js
var webpack = require('webpack');
module.exports = {
entry: {
'vendor': [
'./src/main/webapp/app/vendor',
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/forms',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'@ng-bootstrap/ng-bootstrap',
'angular2-cookie',
'angular2-infinite-scroll',
'jquery',
'ng2-bootstrap',
'ng-jhipster',
'ng2-webstorage',
'rxjs'
]
},
resolve: {
extensions: ['.ts', '.js'],
modules: ['node_modules']
},
module: {
exprContextCritical: false,
rules: [
{
test: /(vendor\.css|global\.css)/,
loaders: ['style-loader', 'css-loader']
},
{
test: /\.(jpe?g|png|gif|svg|woff|woff2|ttf|eot)$/i,
loaders: [
'file-loader?hash=sha512&digest=hex&name=[hash].[ext]', {
loader: 'image-webpack-loader',
query: {
gifsicle: {
interlaced: false
},
optipng: {
optimizationLevel: 7
}
}
}
]
}
]
},
output: {
filename: '[name].dll.js',
path: './build/www',
library: '[name]'
},
plugins: [
new webpack.DllPlugin({
name: '[name]',
path: './build/www/[name].json'
})
]
};
webpack.common.js
const webpack = require('webpack');
const CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const StringReplacePlugin = require('string-replace-webpack-plugin');
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin');
const path = require('path');
module.exports = function (options) {
const DATAS = {
VERSION: JSON.stringify(require("../package.json").version),
DEBUG_INFO_ENABLED: options.env === 'dev'
};
return {
entry: {
'polyfills': './src/main/webapp/app/polyfills',
'global': './src/main/webapp/content/css/global.css',
'main': './src/main/webapp/app/app.main'
},
resolve: {
extensions: ['.ts', '.js'],
modules: ['node_modules']
},
module: {
rules: [
{ test: /bootstrap\/dist\/js\/umd\//, loader: 'imports-loader?jQuery=jquery' },
{
test: /\.ts$/,
loaders: [
'angular2-template-loader',
'awesome-typescript-loader'
],
exclude: ['node_modules/generator-jhipster']
},
{
test: /\.html$/,
loader: 'html-loader',
options: {
minimize: true,
caseSensitive: true,
removeAttributeQuotes:false,
minifyJS:false,
minifyCSS:false
},
exclude: ['./src/main/webapp/index.html']
},
{
test: /\.css$/,
loaders: ['to-string-loader', 'css-loader'],
exclude: /(vendor\.css|global\.css)/
},
{
test: /(vendor\.css|global\.css)/,
loaders: ['style-loader', 'css-loader']
},
{
test: /\.(jpe?g|png|gif|svg|woff|woff2|ttf|eot)$/i,
loaders: [
'file-loader?hash=sha512&digest=hex&name=[hash].[ext]', {
loader: 'image-webpack-loader',
query: {
gifsicle: {
interlaced: false
},
optipng: {
optimizationLevel: 7
}
}
}
]
},
{
test: /app.constants.ts$/,
loader: StringReplacePlugin.replace({
replacements: [{
pattern: /\/\* @toreplace (\w*?) \*\//ig,
replacement: function (match, p1, offset, string) {
return `_${p1} = ${DATAS[p1]};`;
}
}]
})
}
]
},
plugins: [
new CommonsChunkPlugin({
names: ['manifest', 'polyfills'].reverse()
}),
new webpack.DllReferencePlugin({
context: './',
manifest: require(path.resolve('./build/www/vendor.json')),
}),
new CopyWebpackPlugin([
{ from: './node_modules/swagger-ui/dist', to: 'swagger-ui/dist' },
{ from: './src/main/webapp/swagger-ui/', to: 'swagger-ui' },
{ from: './src/main/webapp/favicon.ico', to: 'favicon.ico' },
{ from: './src/main/webapp/robots.txt', to: 'robots.txt' },
{ from: './src/main/webapp/i18n', to: 'i18n' }
]),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
}),
new HtmlWebpackPlugin({
template: './src/main/webapp/index.html',
chunksSortMode: 'dependency',
inject: 'body'
}),
new AddAssetHtmlPlugin([
{ filepath: path.resolve('./build/www/vendor.dll.js'), includeSourcemap: false }
]),
new StringReplacePlugin()
]
};
};
以下内容摘自app.module.ts
import './vendor.ts';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { BrowserModule } from '@angular/platform-browser';
import { Ng2Webstorage } from 'ng2-webstorage';
import { DropdownModule } from 'ng2-bootstrap';
import {
NavbarComponent,
FooterComponent,
} from './layouts';
@NgModule({
imports: [
BrowserModule,
LayoutRoutingModule,
DropdownModule.forRoot(),
Ng2Webstorage.forRoot({ prefix: 'jhi', separator: '-'}),
],
对于我的生活,当我尝试在navbar.html中使用bootstrap下拉列表时,我无法理解为什么它不起作用。
答案 0 :(得分:0)
我错过了在html文件中使用ng2-bootstrap的指令。这解决了这个问题。