如何使用 gitlab 或 github 执行npm run build
一: 如何快速搭建一个组件库
首先,我们介绍一个快速包装组件库的工具:https://github.com/yanhaijing/jslib-base

按照文档来,就简单几步:
npx @js-lib/cli mylib
jslib new mylib
然后我们src 目录添加我们自己的文件库,然后以 index.js 导出文件。
例如:

index.js 是对外提供了函数或者变量接口
// import 'babel-polyfill';
import jsBridge from './utils/js-bridge';
import * as htmlUtils from './utils/html-utils';
import DOMAIN from './utils/DOMAIN';
import LS from './utils/local-storage';
import { uSmartInit } from './utils/init';
import setTitleBar from './utils/set-title-bar';
import toRsa from './utils/rsa'
import i18n from './utils/plugins/yx-i18n/index'
export {
jsBridge,
htmlUtils,
DOMAIN,
LS,
uSmartInit,
setTitleBar,
toRsa,
i18n
};
我们执行npm run build ,进行打包
npm run build
# 发布到远程
git push
然后打 tag之后,生成对外下载的链接,我们以 gitlab 为例

二:使用组件库
本地项目按照组件库,使用以下方式,获取最新修改的库
// 添加
// yarn add git+<仓库地址>#<tag版本号>,例如
yarn add git+ssh://git@szgitlab.name.com:222567575/web/yx-base-h5.git#v1.0.1
// 更新的时候,可以先删除 老包,然后安装新包,主要是 tag 的改动,例如
yarn remove git+ssh://git@szgitlab.name.com:222567575/web/base-h5.git#v1.0.1
yarn add git+ssh://git@szgitlab.name.com:222567575/web/base-h5.git#v1.0.2
以上是生成一个 npm 包的流程。
知识附录:
1: npm package git URL formants
npm package git URL formants 可以参考 npm 文档

由于npm有缓存机制,所以,当你更新完库的代码的时候,执行 npm install 并不会拉取最新的代码,所以我们可以打 tag 的形式实现更新。
2: 关于模块npm 官方给出了明确的定义
A module is any file or directory in the node_modules directory that can be loaded by the Node.js require() function.
To be loaded by the Node.js require() function, a module must be one of the following:
- A folder with a package.json file containing a "main" field.
- A JavaScript file.
注意: 不是所有的模块都要求包含一个package.json文件,因为不是所有的模块都是 npm包,但是 npm 包一定是包含package.json的模块。
在 node 程序的上下文中,模块也可以是从一个文件加载而来的。例如
var req = require('request')
我们可以说“变量req指向请求模块”
如何使用 gitlab 或 github 执行npm run build的更多相关文章
- 执行npm run build之后显示空白页面
最近在学习使用webpack,在项目最后打包过程,执行npm run build之后得到的dist目录放到服务器上打开,显示空白页面,但是标题能正常显示,查看控制台发现是数据位置请求报错,查阅资料后知 ...
- vue-electron 使用sqlite3数据库,执行npm run build 报错 .NET Framework 2.0 SDK,Microsoft Visual Studio 2005[C:\temp\wechat\node_modules\sqlite3\build\binding.sln]
问题描述 vue-electron 使用sqlite3数据库,执行npm run build 报错如下: .NET Framework 2.0 SDK,Microsoft Visual Studio ...
- vue中执行npm run build报错解决方法?
遇到了执行npm run build 后报错: [build:js ] Module not found: Error: Can't resolve 'scss-loader' in 'D:\work ...
- Electron 桌面应用打包(npm run build)简述(windows + mac)
最近一段时间在用electron+vue做内部项目的一键构建发布系统的桌面应用,现就其中打包流程写个备注,以示记录. Windows环境打包:1.首先贴一下package.json. { " ...
- vue使用npm run build命令打包
vue使用npm run build命令打包项目 当我们使用vue-cli脚手架完成一个项目的时候,下一步肯定会想要怎么把这个项目放到互联网上或者本地直接打开呢,我们在本地调试的时候只要命令行执行 ...
- npm run build 打包后,如何查看效果
我们用vue-cli搭建的项目执行npm build后本地打开页面空白,如果才能查看npm run build之后的结果呢 首先我们看一下提示 Tip: built files are meant t ...
- vue npm run build 失败
之前删除过 node-moudel 文件夹,然后 npm install 重新安装,一切OK.打包的时候,报错,找不到caniuse什么的.再删除node-moudel,重新cnpm install ...
- electron-vue在npm run build时报错 ⨯ cannot execute cause=fork/exec C:\Users\801\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.5.0\rcedit-ia32.exe: Access is denied.
问题描述 在electron-vue执行npm run build时报错,错误如下: ⨯ cannot execute cause=fork/exec C:\Users\801\AppData\Loc ...
- npm run build 打包后空白页解决问题两种情况
问题一:assetsPublicPath配置错误 解决办法:打开config/index.js文件 build:{ // assetsPublicPath: '/' ass ...
随机推荐
- 多测师讲解selenium _assert断言_高级讲师肖sir
assert断言 # # 断言:最常用的断言方法if判断# assert Python语法中自带的断言from selenium import webdriverfrom time import sl ...
- day52 Pyhton 前端03
内容回顾 块级标签: div p h 列表:ol;ul;dl 表格:table 行内标签: span a i/em b/strong u/del 行内块: input textarea img 其他: ...
- Linux系统编程 —线程同步概念
同步概念 同步,指对在一个系统中所发生的事件之间进行协调,在时间上出现一致性与统一化的现象. 但是,对于不同行业,对于同步的理解略有不同.比如:设备同步,是指在两个设备之间规定一个共同的时间参考:数据 ...
- kali 安裝虛擬機VMware
0x00前言 由於之前已經安裝過虛擬機,這次爲了寫博客又重新安裝了一邊,有些地方直接按照之前的默認的設置來了,省了設置,中間又換了一個實驗環境.完成了文章中的演示,整個過程多次實驗是沒問題的,若有疑問 ...
- php中,posix_getpid() 和 getmypid() 有什么不同
getmypid:windows 和 linux都可以用posix_getpid:仅linux可以用
- 忘记MySQL密码怎么办?一招教你搞定!
在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错.那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急 ...
- 5G-第五代移动通信系统(5th generation mobile/wireless/cellular system)
通信系统 有意义的信息交流被称为通讯. 自然界:狼嚎.狗叫.虫鸣.鸡叫. 人类社会:说话.眼神.写信.烽火台. 目的:信息的传递. 人类发明电以后,开始使用电来传递信息,特别快. 于是有了电报.电话以 ...
- if else 太多?看我用 Java 8 轻松干掉!
之前我用 Java 8 写了一段逻辑,就是类似下面这样的例子: /* * 来源公众号:Java技术栈 */ if(xxxOrder != null){ if(xxxOrder.getXxxShippi ...
- BootStrapValidator表单验证插件的学习和使用
BootStrapValidator表单验证插件的学习和使用 引入标签 <script type="text/javascript" src="https://cd ...
- JUC之线程池-三大方法-七大参数-四种拒绝策略
线程池:重点 三大方法 七大参数 四种拒绝策略 使用池化技术的理由: 我们的程序伴随着创建销毁线程十分浪费资源, 所以使用线程池,先创建线程,随用随取,用完归还 简单来说就是节约了资源. 使用线程池的 ...