質問編集履歴

1

webpack.config.jsが掲載のものでは動かなかったので修正しました。

2018/08/17 07:08

投稿

SystemAjisai
SystemAjisai

スコア171

test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,8 @@
58
58
 
59
59
  webpack.config.js
60
60
 
61
+ ※(追記)ミスがあったので差し替えました※
62
+
61
63
  ```javascript
62
64
 
63
65
  const path = require('path');
@@ -74,275 +76,259 @@
74
76
 
75
77
  module.exports = {
76
78
 
79
+ // development|production|none
80
+
81
+ mode: 'development',
82
+
83
+ entry: {
84
+
77
- // javascript
85
+ // javascript
86
+
78
-
87
+ "js/app" : "./resources/src/js/app.js",
88
+
89
+ // css
90
+
91
+ "main" : "./resources/src/css/main.scss",
92
+
93
+ },
94
+
95
+ output: {
96
+
97
+ path: setPath('/resources'),
98
+
99
+ filename: "[name].js"
100
+
101
+ },
102
+
103
+ optimization: {
104
+
105
+ splitChunks: {
106
+
107
+ name: 'js/vendor',
108
+
109
+ chunks: 'initial',
110
+
111
+ }
112
+
113
+ },
114
+
115
+ module:{
116
+
117
+ rules:[
118
+
79
- {
119
+ {
120
+
80
-
121
+ test: /.vue?$/,
122
+
81
- mode: 'development',
123
+ loader: 'vue-loader',
82
-
83
- entry: {
124
+
84
-
85
- // javascript
86
-
87
- "js/app" : "./resources/src/js/app.js",
88
-
89
- },
125
+ },
126
+
90
-
127
+ {
128
+
129
+ test: /.scss$/,
130
+
131
+ use: [
132
+
133
+ MiniCssExtractPlugin.loader,
134
+
135
+ {
136
+
137
+ loader: 'css-loader',
138
+
91
- output: {
139
+ options: {
92
-
140
+
93
- path: setPath('/resources'),
141
+ url: false,
94
-
142
+
95
- filename: "[name].js"
143
+ minimize: true,
144
+
96
-
145
+ sourceMap: true
146
+
147
+ }
148
+
97
- },
149
+ },
98
-
99
- optimization: {
150
+
100
-
101
- splitChunks: {
151
+ {
102
-
152
+
103
- name: 'js/vendor',
153
+ loader: 'sass-loader',
154
+
104
-
155
+ options: {
156
+
105
- chunks: 'initial',
157
+ sourceMap: true
158
+
159
+ }
160
+
161
+ }
162
+
163
+ ]
106
164
 
107
165
  }
108
166
 
109
- },
110
-
111
- module:{
112
-
113
- rules:[
114
-
115
- {
116
-
117
- test: /.vue?$/,
118
-
119
- loader: 'vue-loader',
120
-
121
- },
122
-
123
- ]
124
-
125
- },
126
-
127
- plugins: [
128
-
129
- new VueLoaderPlugin(),
130
-
131
167
  ]
132
168
 
133
169
  },
134
170
 
135
- // css
136
-
137
- {
138
-
139
- mode: 'development',
140
-
141
- entry: {
142
-
143
- // css
144
-
145
- "main" : "./resources/src/css/main.scss",
146
-
147
- },
148
-
149
- module:{
150
-
151
- rules:[
152
-
153
- {
154
-
155
- test: /.scss$/,
156
-
157
- use: [
158
-
159
- MiniCssExtractPlugin.loader,
160
-
161
- {
162
-
163
- loader: 'css-loader',
164
-
165
- options: {
166
-
167
- url: false,
168
-
169
- minimize: true,
170
-
171
- sourceMap: true
172
-
173
- }
174
-
175
- },
176
-
177
- {
178
-
179
- loader: 'sass-loader',
180
-
181
- options: {
182
-
183
- sourceMap: true
184
-
185
- }
186
-
187
- }
188
-
189
- ]
190
-
191
- }
192
-
193
- ]
194
-
195
- },
196
-
197
- plugins: [
198
-
199
- new MiniCssExtractPlugin({
200
-
201
- // prefix は output.path
202
-
203
- filename: 'css/[name].css'
204
-
205
- })
206
-
207
- ]
171
+ plugins: [
172
+
173
+ new VueLoaderPlugin(),
174
+
175
+ new MiniCssExtractPlugin({
176
+
177
+ // prefix は output.path
178
+
179
+ filename: 'css/[name].css'
180
+
181
+ })
182
+
183
+ ]
184
+
185
+ }
186
+
187
+ ```
188
+
189
+
190
+
191
+ test.vue
192
+
193
+ ※vue公式の単一コンポーネントのテンプレートからテスト用にコピーしてちょっと変えたものです。
194
+
195
+
196
+
197
+ ```javascript
198
+
199
+ <template>
200
+
201
+ <div id="app">
202
+
203
+ <h1>{{ msg }}</h1>
204
+
205
+ <h2>Essential Links</h2>
206
+
207
+ <ul>
208
+
209
+ <li><a href="https://vuejs.org" target="_blank">Core Docs</a></li>
210
+
211
+ <li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li>
212
+
213
+ <li><a href="https://chat.vuejs.org" target="_blank">Community Chat</a></li>
214
+
215
+ <li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li>
216
+
217
+ </ul>
218
+
219
+ <h2>Ecosystem</h2>
220
+
221
+ <ul>
222
+
223
+ <li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li>
224
+
225
+ <li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li>
226
+
227
+ <li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li>
228
+
229
+ <li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li>
230
+
231
+ </ul>
232
+
233
+ </div>
234
+
235
+ </template>
236
+
237
+
238
+
239
+ <script>
240
+
241
+ export default {
242
+
243
+ name: 'app',
244
+
245
+ data () {
246
+
247
+ return {
248
+
249
+ msg:'Welcome to Your Vue.js App'
250
+
251
+ }
208
252
 
209
253
  }
210
254
 
211
255
  }
212
256
 
257
+ </script>
258
+
259
+ // ☆ここから↓だけ別のcssファイルになってしまいます。
260
+
261
+ <style lang="scss" scoped>
262
+
263
+ #app {
264
+
265
+ font-family: 'Avenir', Helvetica, Arial, sans-serif;
266
+
267
+ -webkit-font-smoothing: antialiased;
268
+
269
+ -moz-osx-font-smoothing: grayscale;
270
+
271
+ text-align: center;
272
+
273
+ color: #2c3e50;
274
+
275
+ margin-top: 60px;
276
+
277
+ }
278
+
279
+ h1, h2 {
280
+
281
+ font-weight: normal;
282
+
283
+ }
284
+
285
+ ul {
286
+
287
+ list-style-type: none;
288
+
289
+ padding: 0;
290
+
291
+ }
292
+
293
+ li {
294
+
295
+ display: inline-block;
296
+
297
+ margin: 0 10px;
298
+
299
+ }
300
+
301
+ a {
302
+
303
+ color: #42b983;
304
+
305
+ }
306
+
307
+ </style>
308
+
213
309
  ```
214
310
 
215
311
 
216
312
 
217
- test.vue
218
-
219
- ※vue公式の単一コンポーネントのテンプレートからテスト用にコピーしてちょっと変えたものです。
220
-
221
-
222
-
223
- ```javascript
224
-
225
- <template>
226
-
227
- <div id="app">
228
-
229
- <h1>{{ msg }}</h1>
230
-
231
- <h2>Essential Links</h2>
232
-
233
- <ul>
234
-
235
- <li><a href="https://vuejs.org" target="_blank">Core Docs</a></li>
236
-
237
- <li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li>
238
-
239
- <li><a href="https://chat.vuejs.org" target="_blank">Community Chat</a></li>
240
-
241
- <li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li>
242
-
243
- </ul>
244
-
245
- <h2>Ecosystem</h2>
246
-
247
- <ul>
248
-
249
- <li><a href="http://router.vuejs.org/" target="_blank">vue-router</a></li>
250
-
251
- <li><a href="http://vuex.vuejs.org/" target="_blank">vuex</a></li>
252
-
253
- <li><a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a></li>
254
-
255
- <li><a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a></li>
256
-
257
- </ul>
258
-
259
- </div>
260
-
261
- </template>
262
-
263
-
264
-
265
- <script>
266
-
267
- export default {
268
-
269
- name: 'app',
270
-
271
- data () {
272
-
273
- return {
274
-
275
- msg:'Welcome to Your Vue.js App'
276
-
277
- }
278
-
279
- }
280
-
281
- }
282
-
283
- </script>
284
-
285
- // ☆ここから↓だけ別のcssファイルになってしまいます。
286
-
287
- <style lang="scss" scoped>
288
-
289
- #app {
290
-
291
- font-family: 'Avenir', Helvetica, Arial, sans-serif;
292
-
293
- -webkit-font-smoothing: antialiased;
294
-
295
- -moz-osx-font-smoothing: grayscale;
296
-
297
- text-align: center;
298
-
299
- color: #2c3e50;
300
-
301
- margin-top: 60px;
302
-
303
- }
304
-
305
- h1, h2 {
306
-
307
- font-weight: normal;
308
-
309
- }
310
-
311
- ul {
312
-
313
- list-style-type: none;
314
-
315
- padding: 0;
316
-
317
- }
318
-
319
- li {
320
-
321
- display: inline-block;
322
-
323
- margin: 0 10px;
324
-
325
- }
326
-
327
- a {
328
-
329
- color: #42b983;
330
-
331
- }
332
-
333
- </style>
334
-
335
- ```
336
-
337
-
338
-
339
313
  ### 試したこと
340
314
 
341
315
 
342
316
 
343
- 最初はwebpack.config.jsでexportsを1つにして、entryにjavascriptもcssも一緒に書いていました。
317
+ ~~最初はwebpack.config.jsでexportsを1つにして、entryにjavascriptもcssも一緒に書いていました。
344
-
318
+
345
- exportsは配列で渡せるとあったのでjsとsassの設定を分けて書いて、sass側だけプラグインの設定を書いてみた(掲載ソース)のですが、同じ結果になってしまいました。
319
+ exportsは配列で渡せるとあったのでjsとsassの設定を分けて書いて、sass側だけプラグインの設定を書いてみた(掲載ソース)のですが、同じ結果になってしまいました。~~
320
+
321
+
322
+
323
+ (追記)
324
+
325
+ 上記の方法ではバンドル時にエラーになっていました。
326
+
327
+ watchという、ファイルを変更したらすぐバンドルしてくれる機能を使っていましたが、
328
+
329
+ 監視中にwebpack.config.jsを変えたせいか、全く反映されていませんでした。
330
+
331
+ 掲載ソースは当初のものに差し替えました。
346
332
 
347
333
 
348
334