在开发模式下,所有工作都很好:

在生产中:

我的webpack.config.common.js:
var webpack = require('webpack');
module.exports = {
entry: {
'app': './assets/app/main.ts'
},
resolve: {
extensions: ['.js', '.ts']
},
module: {
rules: [
{
test: /\.html$/,
use: [{ loader: 'html-loader' }]
},
{
test: /\.css$/,
use: [{ loader: 'raw-loader' }]
},
{
test: /\.scss$/,
exclude: /node_modules/,
loaders: ['raw-loader', 'sass-loader']
}
],
exprContextCritical: false
}
};webpack.config.dev.js:
var path = require('path');
var webpackMerge = require('webpack-merge');
var commonConfig = require('./webpack.config.common.js');
module.exports = webpackMerge(commonConfig, {
devtool: 'cheap-module-eval-source-map',
output: {
path: path.resolve(__dirname + '/public/js/app'),
publicPath: "/js/app/",
filename: 'bundle.js',
chunkFilename: '[id].chunk.js'
},
module: {
rules: [
{
test: /\.ts$/,
use: [
{loader: 'awesome-typescript-loader', options: {
transpileOnly: true
}},
{loader: 'angular2-template-loader'},
{loader: 'angular-router-loader'}
]
}
]
}
});webpack.config.prod.js:
var path = require('path');
var webpack = require('webpack');
var webpackMerge = require('webpack-merge');
var commonConfig = require('./webpack.config.common.js');
module.exports = webpackMerge.smart(commonConfig, {
entry: {
'app': './assets/app/main.aot.ts'
},
output: {
path: path.resolve(__dirname + '/public/js/app'),
filename: 'bundle.js',
publicPath: '/js/app/',
chunkFilename: '[id].[hash].chunk.js'
},
module: {
rules: [
{
test: /\.ts$/,
use: [
'awesome-typescript-loader',
'angular2-template-loader',
'angular-router-loader?aot=true'
]
}
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
sourceMap: false
})
]
});Package.json中的脚本:
"scripts": {
"start": "node ./bin/www",
"build": "del-cli public/js/app && webpack --config webpack.config.dev.js --progress --profile --watch",
"build:prod": "del-cli public/js/app && ngc -p tsconfig.aot.json && ngc -p tsconfig.aot.json && webpack --config webpack.config.prod.js --progress --profile --bail && del-cli 'public/js/app/**/*.js' 'public/js/app/**/*.js.map' '!public/js/app/bundle.js' '!public/js/app/*.chunk.js' 'assets/app/**/*.ngfactory.ts' 'assets/app/**/*.shim.ts' 'assets/app/**/*.ngsummary.json' 'assets/app/**/*.ngstyle.ts'",
"build:sass": "node-sass assets/app/ -o assets/app",
"watch:sass": "npm run build:sass && node-sass assets/app/ -wo assets/app/"
}最后,一个导入.ts文件中的样式的示例:
styleUrls: ['./auth.component.scss','../common/common.scss']显然我打电话给脚本是为了编译scss,之前.
有人看到了什么不对劲或遗漏了什么吗?谢谢
更新:在开发中工作是因为手表是活动的,webpack正在运行(或者类似的东西,因为我可以在chrome的开发人员栏中看到),如果我没有使用它就无法运行css。
更新2:
我找到了一种让它在生产中工作的方法,但是它在开发中崩溃了:
var webpack = require('webpack');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const extractSass = new ExtractTextPlugin({
filename: "bundle.css",
disable: process.env.NODE_ENV === "development"
});
module.exports = {
entry: {
'app': './assets/app/main.ts'
},
resolve: {
extensions: ['.js', '.ts']
},
module: {
rules: [
{
test: /\.html$/,
use: [{ loader: 'html-loader' }]
},
{
test: /\.css$/,
use: [{ loader: 'raw-loader' }]
},
{
test: /\.scss$/,
use: extractSass.extract({
use: [{
loader: "css-loader"
}, {
loader: "sass-loader"
}],
fallback: "style-loader"
})
}],
exprContextCritical: false
},
plugins: [
extractSass
]
};发布于 2017-06-02 20:02:04
已解决:
只需导入SCSS文件,而不是使用"styleUrls“到组件。因此,它在开发和生产中都是有效的。
import './auth.component.scss';
import '../common/common.scss';
@Component({
selector: 'tep-auth',
templateUrl: './auth.component.html'
providers: []
})备注:
1)在生产过程中,我创建了一个Css包(参见Webpack配置)。
2)将包导入视图中是必要的,就像我们处理普通css文件一样。
https://stackoverflow.com/questions/44317923
复制相似问题