Я пытаюсь исключить файл JSON из пакета Vue. Я читал этот ответ, но это не очень помогло мне делать то, что я хочу.
Я создал проект Vue с нуля:
vue create hello-world
и я добавил import в view файл Home.vue, так что теперь он выглядит так:
<template>
<div>
<div v-html = "message"></div>
</div>
</template>
<script>
import jsonData from '../assets/test.json'
export default {
name: 'home',
data () {
return {
message: jsonData
}
}
}
</script>
а общая структура проекта нестандартная и выглядит так:
Итак, если я буду использовать npm run build, он будет упакован в dist\js\app.ab0cf9cb.js, что ожидается, и я хочу, чтобы он оставался отдельным файлом в папке dist.
Насколько я понимаю, мне нужно использовать externalsконфигурация из вебпака, что в моем случае означает, что мне нужно создать vue.config.js и соответствующим образом изменить его.
Я пробовал кое-что с vue.config.js, например:
module.exports = {
configureWebpack: {
externals: {
jsonData: '../assets/test.json'
}
}
}
и изменить импорт на import jsonData from 'jsonData', но не повезло
Мой вопрос:
Что именно я должен указать в vue.config.js, чтобы исключить этот файл? Или, чтобы быть более общим, что я должен сделать, чтобы исключить этот файл?





В зависимости от ваших конкретных потребностей самым простым решением может быть просто размещение файла в общей папке.
Webpack не будет их обрабатывать, а просто переместит в папку dist, сохранив структуру папок. Нет необходимости в настройке.
/public/assets/test.json
См. дополнительную информацию о статических объектах https://cli.vuejs.org/guide/html-and-static-assets.html#the-public-folder
Есть ли другой способ исключить этот файл из пакета?
Возможно, но, исходя из предоставленной информации, я бы порекомендовал импорт статического файла JSON. Расскажите мне больше о вашем случае использования, чего вы пытаетесь достичь?
Это решило для меня. Пришлось импортировать вот так: import Test from '../public/assets/test.json'
Проблема здесь в том, что
importбольше не будет работать, поскольку jsonData больше не объединяется webpack. Вы можете попробовать динамический импорт Webpack.