NPM에서 Vuejs 컴포넌트를 만들고 게시하는 방법
저는 이제 본격적으로 일을 시작하게 되었습니다.vue
제가 일하는 회사의 모든 프로젝트에 사용하기 시작했습니다.그리고 그 결과, 제가 만든 것은components
으로는 「」입니다autocomplete
여러 가지가 있다는 것을 알고 있습니다.이미 몇 개를 사용했지만, 어느 것도 제 요구를 모두 충족시키지 못했습니다.제가 같은 컴포넌트를 .
컴포넌트를 하고, 'npmjs', 'npmjs', 'npmjs'를 .npm install -save ...
커뮤니티에 조금이나마 공헌할 수 있습니다.
갱신하다
vue-loader 15.x 릴리즈에서는 이 답변은 기능하지 않습니다.https://medium.freecodecamp.org/how-to-create-a-vue-js-app-using-single-file-components-without-the-cli-7e73e5b8244f 를 사용해 주세요.
Vuejs 라이브러리/컴포넌트를 처음부터 작성/게시할 수 있는 방법은 다음과 같습니다.
순서와 커맨드를 모두 적어두기 때문에, 가이드 전체에 따라 독자적인 Vuejs 컴포넌트를 작성해, NPM 에 공개할 수 있습니다.
게시 후에는 대부분의 라이브러리와 마찬가지로 ex:를 사용하여 설치할 수 있습니다.
npm install --save your-component
그런 다음 다음을 사용하여 앱 내 구성 요소를 가져옵니다.
import something from 'your-component'
컴포넌트를 먼저 폴더를 .vuejs-hello-app
다른 을 붙이고 그에 '(어느 이름)'을.
npm init
npm이 "Enter"라는 이름의 합니다.package.json
하다
을 (에서) 했습니다.
1.0.0
로로 합니다.0.1.0
))))
{
"name": "vuejs-hello-app",
"version": "0.1.0",
"description": "vuejs library demo",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
그 후 라이브러리의 의존관계를 설치해야 합니다.
는 크게 두 수 있습니다.dependency
★★★★★★★★★★★★★★★★★」devDependency
dependency
:
자체 컴포넌트가 실행되는 외부 라이브러리입니다.다른 사용자가 컴포넌트를 설치할 때 npm은 이 의존관계가 존재하는지 또는 먼저 설치되었는지 확인합니다.vue용 컴포넌트를 작성하기 때문에 vue가 필요한지 확인해야 합니다.는 다음과 같이 합니다.
npm install --save vue
devDependency
:
개발 목적으로만 필요한 라이브러리입니다.이러한 라이브러리는 구축 및/또는 변환에 도움이 됩니다.
의 방법을 하여 Dev 는 Dev 입니다.-dev
로.--save
이제 컴포넌트에 필요한 최소한의 Dev 의존성을 설치하겠습니다.
npm install --save-dev babel-core
npm install --save-dev babel-loader
npm install --save-dev babel-preset-env
npm install --save-dev cross-env
npm install --save-dev css-loader
npm install --save-dev file-loader
npm install --save-dev node-sass
npm install --save-dev sass-loader
npm install --save-dev vue-loader
npm install --save-dev vue-template-compiler
npm install --save-dev webpack
npm install --save-dev webpack-dev-server
이 시점에서 라이브러리가 설치되고package.json
다음과 같이 업데이트됩니다.
{
"name": "vuejs-hello-app",
"version": "0.1.0",
"description": "vuejs library demo",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack -p"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"cross-env": "^5.1.1",
"css-loader": "^0.28.7",
"file-loader": "^1.1.5",
"node-sass": "^4.7.2",
"sass-loader": "^6.0.6",
"vue-loader": "^13.5.0",
"vue-template-compiler": "^2.5.9",
"webpack": "^3.10.0",
"webpack-dev-server": "^2.9.7"
},
"dependencies": {
"vue": "^2.5.9"
}
}
(주의: 추가했습니다.
"build": "webpack -p"
웹 팩으로 lib를 구축하다)
이제 코드를 만들고 변환해야 하므로 빌드 버전을 저장할 폴더가 필요합니다.루트 폴더 내에 폴더를 만들고 다음과 같이 이름을 붙입니다.dist
같은 장소에 웹 팩용 컨피규레이션파일을 입력하고 이름을 붙입니다.webpack.config.js
지금까지 작성한 파일은 모두 구성용입니다.사람들이 실제로 사용하는 앱의 경우 최소 두 개의 파일을 생성해야 합니다.src/
디렉토리로 이동합니다.
A main.js
그리고.VuejsHelloApp.vue
다음과 같이 표현합니다../src/main.js
그리고../src/components/VuejsHelloApp.vue
제 광산 구조는 다음과 같습니다.
dist
node_modules
src
main.js
components
VuejsHelloApp.vue
.babelrc
.eslintignore
.gitignore
.npmignore
.travis.yml
CONTRIBUTING
LICENSE
package.json
README.md
webpack.config.js
리스트 되어 있는 파일을 살펴보고, 각 파일의 기능에 대해 설명하겠습니다.
/dist
ES6 이외의 빌드(변환 완료) 버전의 코드를 저장합니다.
node_modules
알고 것
src/
이것은 당신의 라이브러리의 루트 디르입니다.
.babelrc
있기 에 modules 하려면 이 합니다.
{
"presets": [
[
"env",
{
"modules": false
}
]
]
}
.eslintignore
ESLINT를 사용하다이것을 안에 넣습니다.
build/*.js
.gitignore
git)
.npmignore
NPM의 .gitignore와
.travis.yml
travis의 CI 예제를 확인하고 구성합니다.
CONTRIBUTING
가 아니다
LICENSE
가 아니다
package.json
무시하다
README.md
가 아니다
webpack.config.js
이 파일은 브라우저와 호환되는 코드 빌드 버전을 만드는 데 중요한 파일입니다.
이 앱에 따르면 다음과 같은 최소한의 예를 제시하겠습니다.
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: './src/main.js',
module: {
rules: [
// use babel-loader for js files
{ test: /\.js$/, use: 'babel-loader' },
// use vue-loader for .vue files
{ test: /\.vue$/, use: 'vue-loader' }
]
},
// default for pretty much every project
context: __dirname,
// specify your entry/main file
output: {
// specify your output directory...
path: path.resolve(__dirname, './dist'),
// and filename
filename: 'vuejs-hello-app.js'
}
}
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
}),
new webpack.LoaderOptionsPlugin({
minimize: true
})
])
}
은 '지시하다' 입니다.entry
★★★★★★★★★★★★★★★★★」output
웹 팩 를 통해 내용을 할 수 앱을 완전히 사용자 정의하려면 웹 팩 문서를 통해 자세한 내용을 확인할 수 있습니다.
하는 ./src/main.js
앱합니다../dist/vuejs-hello-app.js
이것으로 실제 앱 이외의 셋업은 거의 완료되었습니다.
★★★★★★★★★★★★★★★로 이동/src/components/VuejsHelloApp.vue
이 앱을할 수 .
<template>
<div>
<button @mouseover='move($event)'> I'm alive </button>
</div>
</template>
<script>
export default {
data () {
return {}
},
methods: {
move (event) {
let pos = event.target.style.float;
if(pos === 'left'){
event.target.style.float = 'right'
}else{
event.target.style.float = 'left'
}
}
}
}
</script>
<style scoped>
</style>
그리고 중요한 것은,./src/main.js
수 있습니다.
import VuejsHelloApp from './components/VuejsHelloApp.vue'
export default VuejsHelloApp
, 그럼 이제 자신의 .package.json
이 「」를 합니다."main: "index.js",
"main": "src/main.js",
그런 다음 다음 다음 명령을 실행하여 앱을 빌드하고 게시하십시오.
npm run build
git add .
git commit -m "initial commit"
git push -u origin master
npm login
npm publish
라이브러리를 가져오고 사용하는 중입니다.
모든 것이 순조롭게 진행되었으면 다음과 같이 앱을 설치합니다.
npm install --save vuejs-hello-app
vue에서는 다음과 같이 사용합니다.
<template>
<div>
<VuejsHelloApp> </VuejsHelloApp>
</div>
</template>
<script>
import VuejsHelloApp from 'vuejs-hello-app'
export default {
name: 'HelloWorld',
components: { VuejsHelloApp }
}
</script>
답을 쓰면서 이 앱 https://github.com/samayo/vuejs-hello-app을 만들었으니 코드를 더 잘 이해하는 데 도움이 될 것 같습니다.
언급URL : https://stackoverflow.com/questions/47754244/how-to-create-and-publish-a-vuejs-component-on-npm
'programing' 카테고리의 다른 글
NuxtJs의 Async Data()에 의해 취득된 데이터를 갱신하려면 어떻게 해야 합니까? (0) | 2022.08.19 |
---|---|
NoClassDefFoundError: 안드로이드.support.v7.internal.view.메뉴판메뉴빌더 (0) | 2022.08.19 |
C에서 값 최적화 및 복사 항목 반환 (0) | 2022.08.19 |
Laravel 리소스 경로를 Axios에서 삭제 (0) | 2022.08.19 |
Vue.js를 사용하여 대체 버튼을 클릭하여 대체 약품을 사용하고 싶다. (0) | 2022.08.19 |