ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • dist 디렉토리의 무슨 Vuejs 파일을 쓸 것인가?
    Vue.js 2021. 1. 23. 22:13

    vue/dist 디렉토리를 보면 많은 파일들이 있습니다.

    어떤 파일을 써야 하는 것일까요?

    vue/dist/README.md 파일의 내용은 아래와 같습니다.

     

    ## Which dist file to use?
    
    ### From CDN or without a Bundler
    
    - **`vue(.runtime).global(.prod).js`**:
      - For direct use via `<script src="...">` in the browser. Exposes the `Vue` global.
      - Note that global builds are not [UMD](https://github.com/umdjs/umd) builds.  They are built as [IIFEs](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) and is only meant for direct use via `<script src="...">`.
      - In-browser template compilation:
        - **`vue.global.js`** is the "full" build that includes both the compiler and the runtime so it supports compiling templates on the fly.
        - **`vue.runtime.global.js`** contains only the runtime and requires templates to be pre-compiled during a build step.
      - Inlines all Vue core internal packages - i.e. it's a single file with no dependencies on other files. This means you **must** import everything from this file and this file only to ensure you are getting the same instance of code.
      - Contains hard-coded prod/dev branches, and the prod build is pre-minified. Use the `*.prod.js` files for production.
    
    - **`vue(.runtime).esm-browser(.prod).js`**:
      - For usage via native ES modules imports (in browser via `<script type="module">`.
      - Shares the same runtime compilation, dependency inlining and hard-coded prod/dev behavior with the global build.
    
    ### With a Bundler
    
    - **`vue(.runtime).esm-bundler.js`**:
    
      - For use with bundlers like `webpack`, `rollup` and `parcel`.
      - Leaves prod/dev branches with `process.env.NODE_ENV` guards (must be replaced by bundler)
      - Does not ship minified builds (to be done together with the rest of the code after bundling)
      - Imports dependencies (e.g. `@vue/runtime-core`, `@vue/runtime-compiler`)
        - Imported dependencies are also `esm-bundler` builds and will in turn import their dependencies (e.g. `@vue/runtime-core` imports `@vue/reactivity`)
        - This means you **can** install/import these deps individually without ending up with different instances of these dependencies, but you must make sure they all resolve to the same version.
      - In-browser template compilation:
        - **`vue.runtime.esm-bundler.js` (default)** is runtime only, and requires all templates to be pre-compiled. This is the default entry for bundlers (via `module` field in `package.json`) because when using a bundler templates are typically pre-compiled (e.g. in `*.vue` files).
        - **`vue.esm-bundler.js`**: includes the runtime compiler. Use this if you are using a bundler but still want runtime template compilation (e.g. in-DOM templates or templates via inline JavaScript strings). You will need to configure your bundler to alias `vue` to this file.
    
    #### Bundler Build Feature Flags
    
    Starting with 3.0.0-rc.3, `esm-bundler` builds now exposes global feature flags that can be overwritten at compile time:
    
    - `__VUE_OPTIONS_API__` (enable/disable Options API support, default: `true`)
    - `__VUE_PROD_DEVTOOLS__` (enable/disable devtools support in production, default: `false`)
    
    The build will work without configuring these flags, however it is **strongly recommended** to properly configure them in order to get proper tree-shaking in the final bundle. To configure these flags:
    
    - webpack: use [DefinePlugin](https://webpack.js.org/plugins/define-plugin/)
    - Rollup: use [@rollup/plugin-replace](https://github.com/rollup/plugins/tree/master/packages/replace)
    - Vite: configured by default, but can be overwritten using the [`define` option](https://github.com/vitejs/vite/blob/a4133c073e640b17276b2de6e91a6857bdf382e1/src/node/config.ts#L72-L76)
    
    Note: the replacement value **must be boolean literals** and cannot be strings, otherwise the bundler/minifier will not be able to properly evaluate the conditions.
    
    ### For Server-Side Rendering
    
    - **`vue.cjs(.prod).js`**:
      - For use in Node.js server-side rendering via `require()`.
      - If you bundle your app with webpack with `target: 'node'` and properly externalize `vue`, this is the build that will be loaded.
      - The dev/prod files are pre-built, but the appropriate file is automatically required based on `process.env.NODE_ENV`.
    

     

    개발 초기단계이고 webpack과 같은 build tool을 쓰지 않는다면, vue.global.js를 쓰면 되고

    pre-compile을 할 것인지 등에 따라서, 적당한 js를 선택해서 쓰면 되고

    dist 디렉토리의 파일들은 아래와 같습니다.

    oneboard@oneboarcBookPro dist % ls
    vue.cjs.js			vue.esm-browser.prod.js		vue.runtime.esm-browser.js	vue.runtime.global.prod.js
    vue.cjs.prod.js			vue.esm-bundler.js		vue.runtime.esm-browser.prod.js
    vue.d.ts			vue.global.js			vue.runtime.esm-bundler.js
    vue.esm-browser.js		vue.global.prod.js		vue.runtime.global.js
    

     

    더 자세한 js 선택 방법은 배포와 관련되어 있습니다

    v3.vuejs-korea.org/guide/tooling/deployment.html#빌드-도구를-사용할때

     

    운영 배포 | Vue.js

    운영 배포 INFO 다음에 소개하는 팁들은 모두 Vue CLI (opens new window)를 사용하면 모두 적용되어 있습니다. 이 섹션은 직접 빌드를 설정할때만 필요한 내용입니다. 운영 모드 활성화 하기 개발 중에 V

    v3.vuejs-korea.org

     

    vue.global.js를 사용하면, chrome의 dev. console에 아래와 같은 메시지가 나옵니다.

    You are running a development build of Vue.
    Make sure to use the production build (*.prod.js) when deploying for production.
    반응형

    'Vue.js' 카테고리의 다른 글

    alpine.js  (0) 2021.01.25
    vue.js 3 관련 사이트  (0) 2021.01.23
    vue.js 설치하기  (0) 2021.01.18
Designed by Tistory.