1
1
const path = require ( 'path' ) ;
2
2
const webpack = require ( 'webpack' ) ;
3
+ const ExtractTextPlugin = require ( 'extract-text-webpack-plugin' ) ;
4
+ const OptimizeCssAssetsPlugin = require ( 'optimize-css-assets-webpack-plugin' ) ;
3
5
const NativeScriptVueTarget = require ( 'nativescript-vue-target' ) ;
4
6
5
7
// Generate platform-specific webpack configuration
6
8
module . exports = platform => {
9
+
10
+ // CSS / SCSS style extraction loaders
11
+ const cssLoader = ExtractTextPlugin . extract ( {
12
+ use : [
13
+ {
14
+ loader : 'css-loader' ,
15
+ options : { url : false } ,
16
+ } ,
17
+ ] ,
18
+ } ) ;
19
+ const scssLoader = ExtractTextPlugin . extract ( {
20
+ use : [
21
+ {
22
+ loader : 'css-loader' ,
23
+ options : { url : false } ,
24
+ } ,
25
+ 'sass-loader' ,
26
+ ] ,
27
+ } ) ;
28
+
7
29
return {
8
30
target : NativeScriptVueTarget ,
9
31
entry : path . resolve ( __dirname , './src/main.js' ) ,
10
32
output : {
11
33
path : path . resolve ( __dirname , './dist/app' ) ,
12
- filename : `app.bundle. ${ platform } .js` ,
34
+ filename : `app.${ platform } .js` ,
13
35
} ,
14
36
module : {
15
37
rules : [
@@ -18,9 +40,23 @@ module.exports = platform => {
18
40
exclude : / ( n o d e _ m o d u l e s ) / ,
19
41
loader : 'babel-loader' ,
20
42
} ,
43
+ {
44
+ test : / \. c s s $ / ,
45
+ use : cssLoader ,
46
+ } ,
47
+ {
48
+ test : / \. s c s s $ / ,
49
+ use : scssLoader ,
50
+ } ,
21
51
{
22
52
test : / \. v u e $ / ,
23
- loader : 'nativescript-vue-loader' ,
53
+ loader : 'ns-vue-loader' ,
54
+ options : {
55
+ loaders : {
56
+ css : cssLoader ,
57
+ scss : scssLoader ,
58
+ } ,
59
+ } ,
24
60
} ,
25
61
] ,
26
62
} ,
@@ -43,6 +79,12 @@ module.exports = platform => {
43
79
callback ( ) ;
44
80
} ,
45
81
plugins : [
82
+ new ExtractTextPlugin ( { filename : `app.${ platform } .css` } ) ,
83
+ new OptimizeCssAssetsPlugin ( {
84
+ cssProcessor : require ( 'cssnano' ) ,
85
+ cssProcessorOptions : { discardComments : { removeAll : true } } ,
86
+ canPrint : false ,
87
+ } ) ,
46
88
new webpack . optimize . UglifyJsPlugin ( {
47
89
compress : { warnings : false } ,
48
90
output : { comments : false } ,
0 commit comments