VueJS project setting - TheOpenCloudEngine/uEngine-cloud GitHub Wiki
VueJS Basics μμ κΈ°λ³Έ VueJS λ₯Ό html νμΌλ‘ λ§λ€μ΄μ μ¬μ©νλ λ²μ μ΅νλ€.
κ·Έλ¬λ μ€μ λ‘ νλ‘μ νΈλ₯Ό νκΈ° μν΄μλ νλ μμν¬ νμμΌλ‘ νλ‘μ νΈλ₯Ό ꡬμ±ν΄μΌνλ€.
μ¬κΈ°μλ vue-cliλ₯Ό ν΅νμ¬ κΈ°λ³Ένκ²½ μ
ν
λ° νλ μμν¬ κ΅¬μ‘°λ₯Ό μ΄ν΄λ³΄κ² λ€.
IDE λ₯Ό μ¬μ©νμ¬ νλ‘μ νΈλ₯Ό μμ±νλ €λ©΄ npm install vue
λͺ
λ ΉμΌλ‘ vueλ₯Ό μ€μΉν μμλ€.
NPM μ java λ‘ μΉλ©΄ maven κ°μ nodejs μ λͺ¨λλ€μ μ§ν©μ΄λ€.
CLI λ Command line interface μ μ½μ΄λ‘ ν°λ―Έλμ ν΅νμ¬ μ¬μ©μμ μ»΄ν¨ν°κ° μνΈμμ©νλ
λ°©μμ λ»νλ€.
$ npm install -g vue-cli
$ vue list
β
browserify - A full-featured Browserify + vueify setup with hot-reload, linting & unit testing.
β
browserify-simple - A simple Browserify + vueify setup for quick prototyping.
β
pwa - PWA template for vue-cli based on the webpack template
β
simple - The simplest possible Vue setup in a single HTML file
β
webpack - A full-featured Webpack + vue-loader setup with hot reload, linting, testing & css extraction.
β
webpack-simple - A simple Webpack + vue-loader setup for quick prototyping.
-g μ΅μ
μ κΈλ‘λ² μ μμΌλ‘ λͺ¨λμ μ€μΉνλΌλ μλ―Έμ΄λ€.
vue list
λ₯Ό ν΅νμ¬ vue μμ μ 곡νλ ν
νλ¦Ώμ νμΈ ν μμλ€.
webpack : νλ‘μ νΈμ ꡬ쑰λ₯Ό λΆμνκ³ μλ°μ€ν¬λ¦½νΈ λͺ¨λμ λΉλ‘―ν κ΄λ ¨ 리μμ€λ€μ μ°Ύμ λ€μ μ΄λ₯Ό λΈλΌμ°μ μμ μ΄μ©ν μ μλ λ²λ€λ‘ λ¬Άκ³ ν¨νΉνλ λͺ¨λ λ²λ€λ¬(Module bundler)λ€.
μ°Έκ³ : μΉν©μ κΈ°λ³Έ κ°λ
browserify : μλ²μ¬μ΄λ νκ²½μμ μ¬μ©λλ CommonJS νμμ require('modules') μ½λλ₯Ό μ¬μ©νμ¬ μμ‘΄μ± κ΄λ¦¬λ₯Ό ν μ μμ λΏλ§ μλλΌ, ν΄λΌμ΄μΈνΈ μ¬μ΄λ νκ²½μμλ μ¬μ©ν μ μλλ‘ νλ° λ¬Άμ΄μ£Όλ(Bundle) μ μ©ν ν΄μ΄λ€. μ¦, Node.jsμ κ°μ νμμ μΉ λΈλΌμ°μ μμλ μ€νκ°λ₯νκ² λ§λ€μ΄ μ€λ€.
μ€λͺ
μ 보면 webpack μ΄ browserify λ₯Ό ν¬ν¨νλ κ°λ
μ΄κ³ , κ΄λ¦¬κ° νΈνκΈ° λλ¬Έμ λ§μ΄ μ°μΈλ€.
μ΄μ webpack μΌλ‘ vue project λ₯Ό μμ±νμ¬ λ³Έλ€.
## vue init <template-name> <project-name>
$ vue init webpack vue-webpack-project
? Project name vue-webpack-project
? Project description A Vue.js project
? Author kimscott <[email protected]>
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Set up unit tests Yes
? Pick a test runner jest
? Setup e2e tests with Nightwatch? Yes
? Should we run `npm install` for you after the project has been created? (recommended) npm
cli λ‘ μ€μΉμ μ¬λ¬κ°μ§ μ΅μ
λ€μ΄ λμ¨λ€. ESLint λ μ½λμ λ£° μ€μ μΌλ‘ μ€νλ μμ±μ€λ₯λ±μ νμ
ν΄μ€λ€.
κ·Έ μΈμ ν
μ€νΈ λͺ¨λμ μ¬μ©ν μ§λ±μ μ
ν
κ³Ό npm install
κΉμ§ ν μ§ μ¬λΆλ₯Ό 묻λλ€.
$ cd vue-webpack-project
## νμν λͺ¨λλ€ install
$ npm install
μ£Όμ νμΌλ€μ μ΄ν΄λ³΄λ©΄
index.html
: λ§μ΄ νμμλ€μνΌ μ΅μ΄ μ§μ
μ μ΄λ€.
package.json
: npmμ μ€μ νλ μν μ νλ€. npm install
μ package.json νμΌμ dependencies, devDependencies μ μ€μ ν λͺ¨λλͺ
κ³Ό λ²μ μ νμΈνλ©΄μ μ€μΉλ₯Ό νλ€.
node_modules
: npm install
ν μμ±λλ ν΄λλ‘ nodejs λͺ¨λλ€μ λͺ¨μλλλ€. μ©λμ΄ μ»€μ νμκ΄λ¦¬μμ μ μΈμν¨λ€.
build
: npm build
μ νμν νμΌλ€μ κ΄λ¦¬νλ€.
config
: μ€μ νμΌλ€μ κ΄λ¦¬
src
: κ°λ° μ½λκ° λ€μ΄κ°λ€.
static
: static μΌλ‘ κ΄λ¦¬ν js, css νμΌμ΄λ image νμΌλ€μ λ£λ ν΄λ
dist
: npm build
ν μμ±λλ ν΄λμ΄λ€. μμ©λ°°ν¬μ ν΄λΉ ν΄λμ λ΄μ©μ λ°°ν¬νλ©΄ λλ€.
npm μ€μ μ κ΄λ¦¬νλ package.json
νμΌμ μ μ μ΄ν΄λ³΄λ©΄
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
"build": "node build/build.js"
}
μμκ°μ΄ μ€νΉ λͺ
λ Ήμ΄ λ€μ λͺ¨μ λμλ€.
λ‘컬μλ²λ‘ νμ΄μ§λ₯Ό μ€νμν€λ €λ©΄ npm run dev
λ₯Ό cliμ μ³λ λμ§λ§, npm start
λΌκ³ μ³λ
μμ scripts λ₯Ό ν΄μνμ¬ μ€νμ μμΌμ€λ€.
devDependencies
λ₯Ό μ΄ν΄λ³΄λ©΄ "webpack": "^3.6.0"
μ²λΌ ^
λ Caret Ranges λ‘
[major, minor, patch] μ minor λ²μ λΆν° major λ²μ κΉμ§λ§ νμ©νλ€λ μλ―Έμ΄λ€.
"3.6.0" <= "^3.6.0" < "4.0.0"
μ€μ νλ‘μ νΈμμλ "webpack": "3.6.0"
μ²λΌ μ νν λ²μ μ fixν΄μ μ¬μ©νλκ±Έ μΆμ²νλ€.
devDependencies
μ λͺ¨λλ€μ€babel
μ ES6 λ¬Έλ²μ μ¬μ©νκΈ° μν λͺ¨λμ΄λ€.
$ npm run dev
Your application is running here: http://localhost:8080
νλ‘μ νΈλ₯Ό ꡬλμν€λ©΄ λ‘컬 μλ²λ₯Ό μμ±νλ©° http://localhost:8080 λ₯Ό ν΅νμ¬ λΈλΌμ°μ μμ μ κ·Όμ΄ κ°λ₯νλ€.
portλ₯Ό λ³κ²½μν€λ €λ©΄ config/index.js νμΌμμ λ³κ²½μ νμ¬ μ£Όλ©΄ λλ€.