teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

/build/webpack.base.conf.jsの追加

2020/08/13 03:47

投稿

reppeppepper
reppeppepper

スコア4

title CHANGED
File without changes
body CHANGED
@@ -212,4 +212,101 @@
212
212
  delete webpackConfig.entry
213
213
 
214
214
  module.exports = webpackConfig
215
+ ```
216
+
217
+ /build/webpack.base.conf.jsの中身
218
+ ```
219
+ 'use strict'
220
+ const path = require('path')
221
+ const utils = require('./utils')
222
+ const config = require('../config')
223
+ const vueLoaderConfig = require('./vue-loader.conf')
224
+
225
+ function resolve (dir) {
226
+ return path.join(__dirname, '..', dir)
227
+ }
228
+
229
+ const createLintingRule = () => ({
230
+ test: /.(js|vue)$/,
231
+ loader: 'eslint-loader',
232
+ enforce: 'pre',
233
+ include: [resolve('src'), resolve('test')],
234
+ options: {
235
+ formatter: require('eslint-friendly-formatter'),
236
+ emitWarning: !config.dev.showEslintErrorsInOverlay
237
+ }
238
+ })
239
+
240
+ module.exports = {
241
+ context: path.resolve(__dirname, '../'),
242
+ entry: {
243
+ app: './src/main.js'
244
+ },
245
+ output: {
246
+ path: config.build.assetsRoot,
247
+ filename: '[name].js',
248
+ publicPath: process.env.NODE_ENV === 'production'
249
+ ? config.build.assetsPublicPath
250
+ : config.dev.assetsPublicPath
251
+ },
252
+ resolve: {
253
+ extensions: ['.js', '.vue', '.json'],
254
+ alias: {
255
+ 'vue$': 'vue/dist/vue.esm.js',
256
+ '@': resolve('src'),
257
+ }
258
+ },
259
+ module: {
260
+ rules: [
261
+ ...(config.dev.useEslint ? [createLintingRule()] : []),
262
+ {
263
+ test: /.vue$/,
264
+ loader: 'vue-loader',
265
+ options: vueLoaderConfig
266
+ },
267
+ {
268
+ test: /.js$/,
269
+ loader: 'babel-loader',
270
+ include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
271
+ },
272
+ {
273
+ test: /.(png|jpe?g|gif|svg)(?.*)?$/,
274
+ loader: 'url-loader',
275
+ options: {
276
+ limit: 10000,
277
+ name: utils.assetsPath('img/[name].[hash:7].[ext]')
278
+ }
279
+ },
280
+ {
281
+ test: /.(mp4|webm|ogg|mp3|wav|flac|aac)(?.*)?$/,
282
+ loader: 'url-loader',
283
+ options: {
284
+ limit: 10000,
285
+ name: utils.assetsPath('media/[name].[hash:7].[ext]')
286
+ }
287
+ },
288
+ {
289
+ test: /.(woff2?|eot|ttf|otf)(?.*)?$/,
290
+ loader: 'url-loader',
291
+ options: {
292
+ limit: 10000,
293
+ name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
294
+ }
295
+ }
296
+ ]
297
+ },
298
+ node: {
299
+ // prevent webpack from injecting useless setImmediate polyfill because Vue
300
+ // source contains it (although only uses it if it's native).
301
+ setImmediate: false,
302
+ // prevent webpack from injecting mocks to Node native modules
303
+ // that does not make sense for the client
304
+ dgram: 'empty',
305
+ fs: 'empty',
306
+ net: 'empty',
307
+ tls: 'empty',
308
+ child_process: 'empty'
309
+ }
310
+ }
311
+
215
312
  ```

2

/build/webpack.test.conf.jsの中身の追加

2020/08/13 03:47

投稿

reppeppepper
reppeppepper

スコア4

title CHANGED
File without changes
body CHANGED
@@ -176,4 +176,40 @@
176
176
  }
177
177
  })
178
178
  }
179
+ ```
180
+
181
+ /build/webpack.test.conf.jsの中身
182
+ ```
183
+ 'use strict'
184
+ // This is the webpack config used for unit tests.
185
+
186
+ const utils = require('./utils')
187
+ const webpack = require('webpack')
188
+ const merge = require('webpack-merge')
189
+ const baseWebpackConfig = require('./webpack.base.conf')
190
+
191
+ const webpackConfig = merge(baseWebpackConfig, {
192
+ // use inline sourcemap for karma-sourcemap-loader
193
+ module: {
194
+ rules: utils.styleLoaders()
195
+ },
196
+ devtool: '#inline-source-map',
197
+ resolveLoader: {
198
+ alias: {
199
+ // necessary to to make lang="scss" work in test when using vue-loader's ?inject option
200
+ // see discussion at https://github.com/vuejs/vue-loader/issues/724
201
+ 'scss-loader': 'sass-loader'
202
+ }
203
+ },
204
+ plugins: [
205
+ new webpack.DefinePlugin({
206
+ 'process.env': require('../config/test.env')
207
+ })
208
+ ]
209
+ })
210
+
211
+ // no need for app entry during tests
212
+ delete webpackConfig.entry
213
+
214
+ module.exports = webpackConfig
179
215
  ```

1

/test/unit/karma.conf.jsの中身を追加

2020/08/13 03:42

投稿

reppeppepper
reppeppepper

スコア4

title CHANGED
File without changes
body CHANGED
@@ -136,4 +136,44 @@
136
136
  ]
137
137
  }
138
138
 
139
+ ```
140
+
141
+ /test/unit/karma.conf.jsの中身
142
+ ```
143
+ // This is a karma config file. For more details see
144
+ // http://karma-runner.github.io/0.13/config/configuration-file.html
145
+ // we are also using it with karma-webpack
146
+ // https://github.com/webpack/karma-webpack
147
+
148
+ var webpackConfig = require('../../build/webpack.test.conf')
149
+
150
+ module.exports = function karmaConfig (config) {
151
+ config.set({
152
+ // to run in additional browsers:
153
+ // 1. install corresponding karma launcher
154
+ // http://karma-runner.github.io/0.13/config/browsers.html
155
+ // 2. add it to the `browsers` array below.
156
+ browsers: ['PhantomJS'],
157
+ frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
158
+ reporters: ['spec', 'coverage'],
159
+ files: [
160
+ '../../node_modules/es6-promise/dist/es6-promise.auto.js',
161
+ './index.js'
162
+ ],
163
+ preprocessors: {
164
+ './index.js': ['webpack', 'sourcemap']
165
+ },
166
+ webpack: webpackConfig,
167
+ webpackMiddleware: {
168
+ noInfo: true
169
+ },
170
+ coverageReporter: {
171
+ dir: './coverage',
172
+ reporters: [
173
+ { type: 'lcov', subdir: '.' },
174
+ { type: 'text-summary' }
175
+ ]
176
+ }
177
+ })
178
+ }
139
179
  ```