vue의 todo-list 구성 요소를 npm에 게시하는 방법
这次给大家带来vue的todo-list组件怎么发布到npm,vue的todo-list组件发布到npm的注意事项有哪些,下面就是实战案例,一起来看一下。
前言
最近几个人合作完成了一个项目,发现有一些公用的基础业务组件,可以提取出来,不仅方便大家在各自模块直接引用,也可以在以后的项目中使用。想到了可不可以自己动手把组件打包发布到内部的npm上,避免以后小伙伴们的重复工作呢?于是乎,说干就干,在这里操练一下,写个todo-list的vue组件案例。案例源码:https://github.com/wuwhs/todoList
建立npm项目
1. 初始化npm项目
建一个文件夹(todoList),在这个文件夹路径下打开cmd窗口,输入指令npm init
,前提是已经装好了node(自带npm)。
$ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. package name: (todolist)
提示输入项目包名称,这里的名称将作为发布到npm上这个包的名称,以后别人使用就可以直接import
或require
到项目中使用。
package name: (todolist) todolist version: (1.0.0)
接下来提示输入版本,这里的版本将作为发布到npm上这个包版本控制号,每次发布必须要改一下版本号,才允许发布,在这里作为第一个版本可以直接回车,默认是1.0.0
。
version: (1.0.0) description:
然后提示输入描述信息,描述一下这个包的功能作用。于是输入:
description: a vue component of todolist entry point:(webpack.config.js)
再者,提示整个项目的入口文件,这里是我们打包后的文件,打包后文件都放到dist
目录下,先设定生成的文件是todoList.min.js
,于是:
entry point:(webpack.config.js) ./dist/todoList.min.js test command: git repository:
接下来提示输入测试命令、git仓库,先不管,后面再详细写,回车默认空。
再提示输入关键字,便于其他人在npm上搜索得到你写的包,最后就是作者和认证,根据自己实际情况填。
keywords: todolist vue author: wuwhs license: (ISC) About to write to D:\WampServer\wamp\www\todoList\package.json: { "name": "vue-todolist", "version": "1.0.0", "description": "a vue component of todolist", "main": "dist/todolist.min.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ "todolist", "vue" ], "author": "wuwhs", "license": "ISC" } Is this ok? (yes) yes
这样,一个npm项目就初始化完了。接下来,来发布一个已经打包好了的组件包(先为空的)到npm上。
发布包到npm上
首先需要有npm官网的一个注册账号,然后输入npm adduser
,依次输入npm登录账号、密码和注册激活邮箱。这样就轻松的登录上了。(PS:在window的CMD窗口,输入密码时不显示输入密码,盲输入,确定后回车即可,这里被坑了一下)
$ npm adduser Username: wuwhs Password: balabala... Email: (this IS public) balabala... Logged in as wuwhs on https://registry.npmjs.org/.
最后,直接输入指令publish
即可大功告成。
$ npm publish + vue-todolist@1.0.0
不过,好事多磨,可能事情没有那么顺利。
一个可能取的包名称跟别人的重名了,这样是不能上传上去的,会提示你没有权限发布这个包。
$ npm publish npm ERR! publish Failed PUT 403 npm ERR! code E403 npm ERR! You do not have permission to publish "vue-router". Are you logged in as the correct user? : vue-router npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2018-04-02T15_41_56_696Z-debug.log
解决方法:需要到package.json
里改一下包名称name
,或者去npm官网搜一下你要取的名称,有没有同名,再回头来改。
还有就是每次发布,没改版本号。
$ npm publish npm ERR! publish Failed PUT 403 npm ERR! code E403 npm ERR! You cannot publish over the previously published versions: 1.0.1. : vue-todolist npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2018-04-02T15_40_28_571Z-debug.log
解决方法:需要到package.json
里改一下版本号后发布。
把npm线路打通了,接下来就是打包输出,上传资源了。
webpack打包
组件写好后,一般要借助自动化工具,将资源整合打包压缩,提供一个入口文件,供别人直接引用。在这里,选用webpack来打包。
为了方便演示,写一个vue官网上todo-list的例子,作为组件打包发布。
整个目录结构
--todoList --src --components --todoItem.vue --todoList.vue --App.vue --index.js --main.js --index.html --webpack.config.js --package.json --.babelrc --.npmignore
下面来分别说明文件内容:
1. package.json文件
{ "name": "vue-todolist", "description": "a vue component of todolist", "version": "1.0.0", "author": "wuwhs", "license": "MIT", "private": false, "main": "./dist/todoList.min.js", "scripts": { "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot", "build": "cross-env NODE_ENV=production webpack --progress --hide-modules" }, "dependencies": { "vue": "^2.5.11" }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ], "devDependencies": { "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-preset-env": "^1.6.0", "babel-preset-stage-3": "^6.24.1", "cross-env": "^5.0.5", "css-loader": "^0.28.7", "file-loader": "^1.1.4", "vue-loader": "^13.0.5", "vue-template-compiler": "^2.4.4", "webpack": "^3.6.0", "webpack-dev-server": "^2.9.1" } }
主要安装一些必要的依赖插件,如vue、babel和webpack
2. webpack.config.js文件
var path = require('path') var webpack = require('webpack') module.exports = { entry: './src/main.js', output: { path: path.resolve(dirname, './dist'), publicPath: '/dist/', filename: 'build.js' }, module: { rules: [ { test: /\.css$/, use: [ 'vue-style-loader', 'css-loader' ], }, { test: /\.vue$/, loader: 'vue-loader', options: { loaders: { } // other vue-loader options go here } }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, { test: /\.(png|jpg|gif|svg)$/, loader: 'file-loader', options: { name: '[name].[ext]?[hash]' } } ] }, resolve: { alias: { 'vue$': 'vue/dist/vue.esm.js' }, extensions: ['*', '.js', '.vue', '.json'] }, devServer: { historyApiFallback: true, noInfo: true, overlay: true }, performance: { hints: false }, devtool: '#eval-source-map' } 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 }) ]) }
webpack的基本热更新以及打包配置,可以参考webpack中文官网
3. .babelrc文件
{ "presets": [ ["env", { "modules": false }], "stage-3" ] }
ES6转化工具babel配置
4. main.js项目入口文件
import Vue from 'vue' import App from './App.vue' new Vue({ el: '#app', render: h => h(App) })
5. App.vue vue根组件
<template> <p id="app"> Hello, todo-list! </p> </template> <script> export default { name: 'app' } </script>
6. index.html 页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>todolist</title> </head> <body> <p id="app"></p> <script src="./dist/build.js"></script> </body> </html>
输入命令npm install
,所有依赖包安装完成后,npm run dev
,启动成功。
PS:遇到一个坑,先用npm install
感觉太慢了,于是断掉了,用cnpm install
,安装完成后,启动总是缺少这个依赖包,那个依赖包,没完没了,于是,把node_modules
全删了,重新cnpm install
一气呵成正常了。cnpm安装会引入一些版本文件,前面npm已装好的包没有,于是就出现了报错,找不到某某依赖包。
至此,打包工具webpack的基本配置就完成了,接下来就是写vue组件了。
写todo-list的vue组件
todo-list组件在很多地方都会作为一个案例使用,在这就直接模范vue官网的案例来写了。
1. todoList.vue组件——列表
<template> <p"> <input v-model="newTodoText" v-on:keyup.enter="addNewTodo" placeholder="Add a todo" > <ul> <li is="todo-item" v-for="(todo, index) in todos" v-bind:key="todo.id" v-bind:title="todo.title" v-on:remove="todos.splice(index, 1)" ></li> </ul> </p> </template> <script> import TodoItem from './TodoItem' export default { components: { TodoItem }, data () { return { newTodoText: '', todos: [ { id: 1, title: 'Do the dishes', } ], nextTodoId: 2 } }, methods: { addNewTodo: function () { this.todos.push({ id: this.nextTodoId++, title: this.newTodoText }) this.newTodoText = '' } } } </script>
2. todoList.vue组件——列表项
减小耦合度,把列表项单独拿出来做一个组件。
<template> <li> {{ title }} <button v-on:click="$emit('remove')">X</button> </li> </template> <script> export default { props: ['title'] } </script>
3. App.vue根组件
将todo-list组件引入并挂载到根节点。
<template> <p id="app"> <todo-list></todo-list> </p> </template> <script> import TodoList from './components/todoList' export default { name: 'app', components: { TodoList } } </script>
刷新浏览器,查看效果
OK,组件基本完成。
组件打包
前面已经验证了,我们写的todo-list组件没问题了,要将这个组件独立打包成一个文件。这时就需要更换一下入口文件了,把测试案例用的main.js
换成index.js
文件。
独立组件入口文件 index.js
目的只是将要打包的组件引入。
import TodoList from './components/todoList.vue' export default TodoList
更改webpack配置 webpack.config.js
将入口文件更换成./src/index.js
,文件出口路径和名称更换成package.json
的main
的路径和名称,这样方便不调整npm的发布目录。
module.exports = { entry: './src/index.js', output: { path: path.resolve(dirname, './dist'), publicPath: '/dist/', filename: 'todoList.min.js' }, ... }
改好后,npm run build
,打包组件,结果就在dist
目录下有了todoList.min.js
文件。这就是打包组件后的文件。也是将要发布到npm上别人真正使用的入口文件。
测试打包好的文件
刚打包好的文件能不能直接使用,在发布到npm上之前先在本地测试一下。要测试方法很简单,就是把跟组件引入的vue组件改成引入刚打包的文件。于是App.vue
这样改:
<script> import TodoList from '../dist/todoList.min.js' export default { name: 'app', components: { TodoList } } </script>
再改回测试案例入口,刷新浏览器,报错!
vue.esm.js?3153:591 [Vue warn]: Failed to mount component: template or render function not defined. found in ---> <TodoList> <App> at src\App.vue <Root>
有点小奔溃,没有渲染函数?难道自己打包出来的组件竟然不能用!后来查资料才知道,打包需要指定一种模块输出类型,可以是commonjs
,AMD
,script
,UMD
模式。在这里是写插件,要采用UMD
模式,即libraryTarget: 'umd'
。于是webpack.config.js
出口文件配置修改为:
output: { path: path.resolve(dirname, './dist'), publicPath: '/dist/', filename: 'todoList.min.js', library: 'vueTodoList', libraryTarget: 'umd', umdNamedDefine: true }
再打包独立组件,更新todoList.min.js
文件,改回测试文件(entry: './src/main.js',
)入口,npm run dev
,刷新浏览器,成功!
发布和使用npm组件包
发布npm组件包
已经验证了我们已经打包生成的todoList.min.js
可以正常使用,接下来就可以发布到npm上了,同样npm跟git一样,可以使用.npmignore
忽略一些上传文件,比如node_moudules
就不要上传上去了。
.DS_Store node_modules/ npm-debug.log yarn-error.log # Editor directories and files .idea .editorconfig *.suo *.ntvs* *.njsproj *.sln
更改一下package.json
的version
,执行npm publish
即可
$ npm publish + vue-todolist@1.0.3
使用npm组件包
发布成功后,这就是一个平常使用的插件了,cnpm install vue-todolist --save
即可安装(使用npm或cnpm安装均可)完成,
$ cnpm install vue-todolist --save √ Installed 1 packages √ Linked 1 latest versions √ Run 0 scripts Recently updated (since 2018-03-27): 1 packages (detail see file D:\appSoft\wampserver\wamp64\www\todoList\node_modules\.recently_updates.txt) Today: → vue-todolist@*(1.0.3) (11:15:22) √ All packages installed (1 packages installed from npm registry, used 564ms, speed 528.68kB/s, json 2(281.56kB), tarball 16.62kB)
然后直接在页面中引入使用。
在App.vue引入todolist组件,就不需要引入本地写的了,直接引入刚才安装好的
<script> import TodoList from 'vue-todolist' export default { name: 'app', components: { TodoList } } </script>
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
위 내용은 vue의 todo-list 구성 요소를 npm에 게시하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











여러분에게 다양한 도움을 주고 더 나은 삶을 발견하는 데 도움이 될 수 있는 다양한 콘텐츠를 샤오홍슈에서 보실 수 있습니다. 공유하고 싶은 내용이 있으면 여기에 게시하여 모두가 함께 살펴볼 수 있습니다. 시간이 지나면 이익을 얻을 수 있습니다. 여기에서 작품을 게시하는 방법을 모른다면 이 소프트웨어를 매일 사용하고 모든 사람이 사용할 수 있도록 다양한 콘텐츠를 게시할 수 있습니다. 필요하다면 놓치지 마세요! 1. Xiaohongshu를 열고 아래의 더하기 아이콘을 클릭하세요. 2. 여기에 [비디오] [사진] [라이브 사진] 옵션이 있습니다. 게시하려는 콘텐츠를 선택하고 클릭하여 확인하세요. 3. 콘텐츠 편집 화면에서 [다음]을 선택하세요. 4. 게시하려는 텍스트 내용을 입력한 후 [펜 게시]를 클릭하세요.

소셜 미디어의 급속한 발전으로 인해 짧은 동영상 플랫폼은 많은 사용자가 자신을 표현하고 삶을 공유하는 주요 채널이 되었습니다. 많은 사용자들이 Xiaohongshu에 자신의 작품 비디오를 게시할 때 다양한 문제에 직면할 수 있습니다. 이 글에서는 샤오홍슈 작품의 영상 출판이 실패하게 되는 이유와 올바른 출판 방법을 제시하고자 한다. 1. Xiaohongshu에서는 왜 작품 영상을 공개할 수 없나요? Xiaohongshu 플랫폼은 때때로 시스템 유지 관리 또는 업그레이드로 인해 시스템 오류가 발생할 수 있습니다. 이 경우 사용자는 자신의 작품을 동영상으로 게시할 수 없는 문제에 직면할 수 있습니다. 사용자는 게시를 시도하기 전에 플랫폼이 정상으로 돌아올 때까지 인내심을 갖고 기다려야 합니다. 네트워크 연결이 불안정하거나 느리면 사용자가 Xiaohongshu에 자신의 작업 동영상을 게시하지 못할 수 있습니다. 사용자는 연결이 안정적이고 안정적인지 확인하기 위해 네트워크 환경을 확인해야 합니다.

라이프스타일 공유 플랫폼인 Xiaohongshu는 많은 사용자를 유치하여 일상을 공유하고 제품을 성장시켰습니다. 많은 사용자가 게시된 콘텐츠를 표시할 수 없다고 보고했습니다. 무슨 일이 일어나고 있나요? 이 기사에서는 Xiaohongshu가 출시되지 않는 이유를 분석하고 솔루션을 제공합니다. 1. 샤오홍슈는 왜 출시가 안되나요? Xiaohongshu는 엄격한 커뮤니티 지침을 구현하며 광고, 스팸, 저속한 콘텐츠 등 게시를 전혀 용납하지 않습니다. 사용자의 콘텐츠가 규정을 위반하는 경우 시스템은 해당 콘텐츠를 차단하고 해당 콘텐츠를 표시하지 않습니다. Xiaohongshu는 사용자가 고품질의 가치 있는 콘텐츠를 게시하도록 요구하며 콘텐츠는 독특하고 혁신적이어야 합니다. 콘텐츠가 너무 일반적이고 혁신성이 부족한 경우 검토를 통과하지 못하여 플랫폼에 표시되지 않을 수 있습니다. 3. 계정 이상

오늘날의 소셜 네트워크 시대에 Xiaohongshu는 젊은이들이 자신의 삶을 공유하고 정보를 얻는 중요한 플랫폼이 되었습니다. 많은 사용자는 Xiaohongshu에 콘텐츠를 게시하여 더 많은 관심과 트래픽을 끌기를 희망합니다. 그렇다면 콘텐츠를 게시하기에 가장 좋은 시기는 언제인가요? 이 기사에서는 Xiaohongshu의 게시 시간 선택과 트래픽 권장 사항이 가장 많은 게시 위치를 자세히 살펴보겠습니다. 1. 소홍서 출판에 가장 좋은 시기는 언제인가요? Xiaohongshu에 콘텐츠를 게시하기에 가장 좋은 시기는 일반적으로 사용자 활동이 많은 기간입니다. Xiaohongshu 사용자의 특성과 행동 습관에 따라 더 적합한 기간이 여러 가지 있습니다. 오후 7시부터 9시 사이에는 대부분의 사용자가 퇴근 후 집에 돌아와 휴식과 오락을 위해 휴대폰으로 콘텐츠를 검색하기 시작했습니다. 따라서 이 기간 동안 게시된 콘텐츠는 사용자의 관심을 끌 가능성이 더 높습니다.

인기 있는 소셜 전자상거래 플랫폼인 Xiaohongshu는 일상생활과 쇼핑 경험을 공유하기 위해 많은 사용자를 끌어 모았습니다. 때때로 당사는 개인 이미지를 더 잘 유지하거나 플랫폼 규정을 준수하기 위해 적시에 삭제해야 하는 일부 부적절한 콘텐츠를 실수로 게시할 수 있습니다. 1. Xiaohongshu 릴리스를 삭제하는 방법은 무엇입니까? 1. Xiaohongshu 계정에 로그인하고 개인 홈페이지에 들어갑니다. 2. 개인 홈페이지 하단의 '내 창작물' 옵션을 찾아 클릭하여 입장합니다. 3. "내 창작물" 페이지에서는 노트, 동영상 등 게시된 모든 콘텐츠를 볼 수 있습니다. 4. 삭제가 필요한 콘텐츠를 찾아 오른쪽에 있는 "..." 버튼을 클릭하세요. 5. 팝업 메뉴에서 "삭제" 옵션을 선택하세요. 6. 삭제 확인 후 해당 콘텐츠는 개인 홈페이지 및 공개 페이지에서 사라집니다.

많은 사용자가 win10에서 일부 게임을 플레이할 때 화면이 멈추거나 화면이 흐려지는 등의 문제에 항상 직면합니다. 이때 다이렉트 플레이 기능을 켜면 문제를 해결할 수 있으며 기능 작동 방법도 매우 간단합니다. 이전 버전의 win10 컴포넌트 다이렉트플레이 설치 방법 1. 검색 상자에 "제어판"을 입력하고 엽니다. 2. 보기 방법으로 큰 아이콘을 선택합니다. 3. "프로그램 및 기능"을 찾습니다. 4. 활성화 또는 활성화하려면 왼쪽을 클릭합니다. Win 기능 끄기 5. 여기에서 이전 버전을 선택하세요. 확인란을 선택하세요.

Xiaohongshu 앱 게시는 어떻게 작동하나요? 많은 친구들은 이 소프트웨어에 수많은 창의적인 작품과 강력한 데이트 서클이 있다는 것을 알고 있습니다. 이 소프트웨어를 처음 사용하는 사용자의 경우 자신의 작품을 게시하여 더 많은 사람들이 자신의 모습을 볼 수 있도록 하는 방법을 모를 수도 있습니다. 아직도 작품 출판 방법을 모르신다면, 이 사이트 편집자가 추천하는 Xiaohongshu 앱에서의 작품 출판에 대한 5분 튜토리얼을 빠르게 참고하세요. 5분 만에 Xiaohongshu 앱에서 작품 퍼블리싱 튜토리얼 1. [Three] 클릭 그림과 같이 왼쪽 상단 빨간색 화살표가 가리키는 [Three]를 클릭합니다. 2. [제작센터]를 클릭합니다. 그림과 같이 빨간색 화살표가 가리키는 [제작센터]를 클릭합니다. 3. 그림과 같이 [게시하러 가기]를 클릭하고,

단편 동영상 플랫폼의 등장으로 Xiaohongshu는 많은 사람들이 자신의 삶을 공유하고 자신을 표현하며 트래픽을 얻는 플랫폼이 되었습니다. 이 플랫폼에서는 비디오 작품을 출판하는 것이 매우 인기 있는 상호 작용 방식입니다. 그렇다면 Xiaohongshu 비디오 작품을 출판하는 방법은 무엇입니까? 1. 샤오홍슈 영상 작품은 어떻게 출판하나요? 먼저, 공유할 비디오 콘텐츠가 준비되어 있는지 확인하세요. 휴대폰이나 기타 카메라 장비를 사용해 촬영할 수 있지만 화질과 사운드 선명도에 주의해야 합니다. 2. 영상 편집 : 작품을 더욱 돋보이게 하기 위해 영상을 편집할 수 있습니다. Douyin, Kuaishou 등과 같은 전문 비디오 편집 소프트웨어를 사용하여 필터, 음악, 자막 및 기타 요소를 추가할 수 있습니다. 3. 표지를 선택하세요. 표지는 사용자의 클릭을 유도하는 핵심 요소입니다. 사용자의 클릭을 유도할 수 있는 명확하고 흥미로운 그림을 표지로 선택하세요.
