npm相关 看这篇就够了
前言
最近在研究 npm 组件发布,碰到一些相关问题,算是整理一下。
涉及内容
package.json 文件介绍
.npmrc 的作用及配置
公网 npm 组件发布
package.json概述
package.json 定义了当前项目中 npm包 之间的依赖关系和项目的一些配置信息(项目名称,版本,描述,开发人,许可证 等等)。
当说到包管理器,就会遇到 yarn 和 npm 的选择性问题。我是喜欢用 yarn
的,看看 github 上的开源项目,比如 vue 项目下就有 yarn.lock 文件,由此我猜测 yarn 可能更受欢迎一些,日常使用中我也是 yarn 用的比较多。
我们可以在 yarn.lock 或 package-lock.json 看到包从哪里下载和依赖关系。
提交代码的时候排除 node_modules 目录,但是要提交 yarn.lock 或 package-lock.json ,用于锁定项目依赖包的版本。并且升级包的时候不要手动改 package.json 中的版本号,要使用命令 yarn upgrade 或 npm upgrade 升级。
npm init 或 yarn init 可以生成 package.json。
package.json 字段介绍name
name 字段作为项目的名称。 比如 vue 中的一个组件 @vue/cli-plugin-babel ,前面这个 @vue 其实就当前包的 scope ,既命名空间。我们可以根据 scope 配置一些私有包 registry,从而达到一些包来源于特定的地址。
registry=
version
npm version [newversion | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=prerelease-id] | from-git]npm [-v | --version] to print npm versionnpm view pkg version to view a packages published versionnpm ls to inspect current package/dependency versions
version: 0.1.0”, 对应 major-minor-patch
# 更新 major 的位置,其余位置为 0npm version major # 更新 minor 的位置,major 不变,其余位置为 0npm version minor # 更新 patch 的位置,其余位置不变npm version patch
major 对应一次大的迭代,比如 vue 3.0 ts 重新,添加新的功能,更新 major 版本号
minor 对应小版本迭代,发生兼容旧版API的修改或功能添加时,更新 minor 版本号
patch 对应修订版本号,一般针对 bug 修复时,修改 patch 的版本号
当你的项目需要发布的时候,version 一定要和以前的不一样,否则发布不成功。
private
标识当前包是否私有,为 true 时包不能发布。
main
默认 index.js。指定 import 或 require 的时候加载的 js。
keywords
描述当前项目的关键字,用于检索当前插件。
publishConfig
publishConfig: {registry:
有的时候呢我们在 .npmrc 配置了别的 registry ,比如淘宝镜像。我安装依赖包的时候呢,想从淘宝镜像安装。发布插件的时候想发布到官网上。就可以在 publishConfig 中配置了。
files
指定发布的依赖包,包含的文件,默认会忽略一些文件。也可以根目录下创建 .npmignore 忽略一些文件。
scripts
配置一些执行脚本。比如说 npm run dev 就是运行 sh ./build/build.sh。
scripts: {// 运行 shell 脚本dev: sh ./build/build.sh,build: npm -v,// build 成功之后会执行 publishpub: npm run buildnpm publish}
dependencies
项目的开发依赖。key 为模块名称,value 为版本范围。项目打包时会将这里的依赖打包进去。
fly-npm 地址
fly-npm 和 fly-use-npm 已发布。
注意,这里也有个坑。比如我有两个插件 fly-npm,fly-use-npm,fly-use-npm 中 dependencies 中依赖 fly-npm。我在 my-vue 项目开发的时候引入 fly-use-npm。我是可以直接 import fly-use-npm 项目可以正常运行。但是当你 import fly-npm 项目解析依赖会报错。因为只有在当前项目中 dependencies 引入的依赖才可以被 import。
templatep>button @click=clickTest测试/button/p>/templatescript// fly-npm 只有在当前 my-vue 项目 dependencies 引入才可以被 import//import flyNpm from fly-npm;import flyUseNpm from fly-use-npm;export default {name: TestPlugin,methods: {clickTest() {flyUseNpm();},},};/script
devDependencies
为开发依赖,打包的时候不会打包进去。比如我们使用的 babel webpak 等相关的插件,打包的时候,并不会被打包进去。
peerDependencies
在将这个之前,我们先来了解 npm 的树形依赖是什么意思。
我创建一个 vue 项目 my-vue 依赖 fly-use-npm(它依赖 fly-npm 1.0.0),fly-npm(2.0.0),在我们项目中可以看到。
当 my-vue 没有引入 fly-npm 2.0.0 的时候,my-vue/node_modules/fly-npm 为 1.0.0。
当我们引入 fly-npm 2.0.0 的时候,依赖关系图如上图,这就是树形依赖。
下面是测试引入 fly-npm 2.0.0 之后的变化。
templatep>button @click=clickTest测试/button/p>/templatescriptimport flyUseNpm from fly-use-npm;import flyNpm from fly-npm;export default {name: TestPlugin,methods: {clickTest() {// 打印 2.0.0console.log(fly-npm, flyNpm);// 使用的是 1.0.0flyUseNpm();},},};/script
从上面我们可以看到,一个项目存在了两份 fly-npm 的包。这样打包的体积相应也会增大。为了解决这个问题,引入了 peerDependencies 。
创建 vue 项目 my-vue,依赖 fly-use-npm(4.0.0,其 peerDependencies 是 fly-npm 1.0.0 )。
peerDependencies 添加的依赖包,不会(测试的 yarn 1.22.0,npm 6.13.7)自动安装的。
当我在 my-vue 项目 yarn install 的时候,由于没有引入 fly-npm 会报错。
当我在项目中引入 fly-npm 2.0.0 安装会在当前项目下,出现警告信息。
warningfly-use-npm@4.0.0 has incorrect peer dependency fly-npm@1.0.0”。
当你开发一个组件,依赖特定包的版本就需要这样处理。
// fly-use-npmimport flyNpm from fly-npm;const obj = () = {console.log(引用的 fly-npm 版本为:, flyNpm.version);if (flyNpm.version1) {throw new Error(版本大于 1);}}export default obj;
算是场景模拟,fly-npm 最新包是 2.0.0,这算是一个重大版本升级,可能存在不兼容 1.0.0 的东西。所以我在 fly-use-npm 推荐使用(peerDependencies)1.0.0。当我在实际用的时候呢,引入 fly-npm 2.0.0 ,发现某个功能依赖 fly-npm 2.0.0 报错了,就需要想到是不是依赖包不兼容的问题了。
但是同时你还想用 fly-npm 2.0.0 的功能,那你只能去提交一个 pr 兼容 fly-npm 或者 fly-use-npm 。
这种情况很少会遇到,一般版本升级都会兼容以前的功能的,也不用太在意这样的问题。
一般我们很少会遇到这种问题。github 上流行的库也很少会用到 peerDependencies。
.npmrc
package.json 中的依赖包从哪里安装呢?.npmrc 可以配置依赖包从哪里安装,也可以配置 npm 的一些别的配置。
.npmrc 配置文件优先级
项目配置文件: /project/.npmrc
用户配置文件:~/.npmrc
全局配置文件:/usr/local/etc/npmrc
npm 内置配置文件 /path/to/npm/npmrc
# 获取 .npmrc 用户配置文件路径npm config get userconfig
项目下 .npmrc 文件的优先级最高,可以每个项目配置不同的镜像,项目之间的配置互不影响。我们也可以指定特殊的命名空间(scope)的来源。
以@thingjs-plugin 开头的包从 registry=
registry=
没有加 -g 配置的是用户配置文件
-g 会配置到全局配置文件
npm 组件发布流程
去 npm 官网申请账号
添加账号到你电脑
开发你的组件,使用 webpack,babel 处理
npm 发布你的包
申请账号
官网申请一个账号,用于登录和发布组件。
在项目的根路径下创建 .npmrc 配置文件,添加如下内容。
# 安装包的时候,配置阿里镜像registry =
在 package.json 中配置发布源。
publishConfig: {registry:
这样下载依赖包会从淘宝镜像下载,发布依赖包会发布到 npm 官网去。
添加账号到你电脑
添加账号命令官网说明 npm adduser
# npm adduser [--registry=url] [--scope=@orgname] [--always-auth] [--auth-type=legacy]npm adduser--registry=
运行上述命令,.npmrc 用户配置文件生成一下内容
registry=
开发你的组件,使用 webpack,babel 处理
由于 webpack,babel 配置比较麻烦,这里使用 vue-cli 脚手架进行开发
package.json
{name: @thingjs-ad/thingjs-app,version: 0.1.1,private: false,scripts: {serve: vue-cli-service serve,build: vue-cli-service build --target lib --name thingjs-app ./src/index.js,lint: vue-cli-service lint,pub: npm run buildnpm publish --access=public},main: dist/thingjs-app.umd.min.js,files: [src,dist],devDependencies: {@vue/cli-plugin-babel: ^4.2.0,@vue/cli-plugin-eslint: ^4.2.0,@vue/cli-service: ^4.2.0,babel-eslint: ^10.0.3,eslint: ^6.7.2,eslint-plugin-vue: ^6.1.2,vue-template-compiler: ^2.6.11},eslintConfig: {root: true,env: {node: true},extends: [plugin:vue/essential,eslint:recommended],parserOptions: {parser: babel-eslint},rules: {}},browserslist: [1%,last 2 versions]}
组件内容
AA.vue
templatep>AA 组件/p>/templatescriptexport default {name:AA};/script
index.js
import AA from ./components/AA.vue;const components = [AA];// 当调用 Vue.use,实际会调用这个 install 方法。Vueponent 注册全局组件。const install = function (Vue) {components.forEach(component = {Vueponent(component.name, component);});};if (typeof window !== undefinedwindow.Vue) {install(window.Vue);}export default {version: 1.0.0,install,AA}
发布组件
npm publish --access=public
最全 口罩出口指南 看这篇就够了
随着国外疫情的爆发,各国对口罩的需求也急剧增加,中国作为口罩生产大国,也在抗疫中为各国进行了援助和支持。仅两个月,中国验放出口口罩达278亿,我国口罩日产1个月翻13倍!
那么出口口罩都需要准备什么,出口申报流程又是如何呢?AMZ君这就来带你了解。
出口通关流程:
报关前提条件收发货人注册编码(慈善机构可为临时编码),需办理无纸化通关法人卡。
出口资质口罩出口生产销售单位、境内发货人,需满足国内生产、市场流通资质需求。
出口申报要求1.商品归类:除特殊情况外,绝大部分口罩应归入税号63079000;2.检验检疫:口罩为不法检产品,申报时检验检疫项目无需填报;特别注意:对出口伊朗等少数几个国家的产品需按规定进行装运前检验。3.关税征免:贸易出口:征免性质为申报一般征税,征免方式为申报照章征税;捐赠性质:境内发货报答贸易代理商、慈善机构等,征免性质可不填,征免方式申报全免;4.禁限办理:目前商务部未对口罩设置贸易管制要求,中国海关也无针对防护物资的监管证件口岸验核要求;5.申报规范:按照规范申报要求填写商品名称、成分含量;如物资非中国生产,原产国按照实际生产国填写。
出口退税口罩的出口退税率为13%
中美关税排除加征美国贸易代表处表示:对从中国进口的口罩等部分医疗产品取消加征关税。
快速通关保障物资出口申报如遇单窗等系统故障,可联系现场海关采取应急方式处置,或者拨打海关12360热线。
口罩出口需要的资质信息:
1.营业执照2.企业生产许可证3.产品检验报告4.医疗器械注册证(非医用不需要)5.产品说明书、标签6.产品批次/号7.产品质量安全书或合格证8.产品样品图片及外包装图片9.贸易公司须取得海关收发货人注册备案
出口医疗物资的企业需要什么资质?
对于普通口罩等非医疗器械的物资,没有监管条件,有进出口权许可证即可。涉及的口罩等疫情物资,需要产品三证:
1.营业执照(经营范围包含有医疗器械相关)2.产品备案证或者注册证3. 厂家检测报告注:如果企业想赠送或代海外关联公司采购,需要提供情况说明。某些贸易公司没有医疗器械的资质,只要厂家提供三证也是可以出口的。
值得特别注意的是,出口伊朗是比较复杂的,需要在伊朗申请COI认证,中文为符合性核查,是伊朗进口强制发件要求的相关检查。
国外口罩出口需要的资质信息:首先要提醒的是,不论是个人还是企业邮寄/出口口罩,都需要保证口罩是合格产品。
这可以在国家药监局查询:登录“国家药品监督办理局”官网,点击“医疗器械-国产器械”的栏目。输入该款口罩的医疗器械注册证号或企业名称等,就可以知道与产品相关的企业生产信息,批准文号信息,即可了解是否为合格产品。
如个人邮寄口罩到美国,可以考虑FEDEX、UPS、DHL、EMS、SF等快递公司。DHL会要求寄件人提供美国的FDA认证,也有的DHL、FEDEX拒收。
各国对口罩出口相关要求
韩国
必要资料:提单,箱单,发票,韩国进口商营业执照准入门槛:韩国医疗器械基本分类为I、II、III、IV类,持证为韩国公司(License holder),韩国收货人需要到韩国药监局Korea Pharmaceutical Traders Association. 提前备案进口资质。注企业自用又是受赠的情况,可以自行进口,不需要有相关资质。口罩要求:口罩还需要有详细的原产地标识,如果是中国制造务必有标签:Made in China, 生产厂家信息,保质期,还要准备成分含量说明,制造工艺流程等,货物到了韩国以后还需进行精简化验送交样品到实验室,化验合格后方可进入韩国市场销售流通。
日本
必要资料:提单,箱单,发票出口日本的PMDA注册医疗器械公司想把产品投放到日本,必需要满足日本的Pharmaceutical and Medical Device Act (PMD Act),在PMD Act的要求下,TOROKU注册系统要求国外的制造商必需向PMDA注册制造商信息。口罩包装要求:包装上印有病毒拦截99%的字样PFE:0.1um微粒子颗粒过滤效率BFE:细菌过滤率VFE:病毒过滤率
美国
必要资料:提单,箱单,发票注册许可证:美国FDA注册许可准入门槛:必需取得美国 NIOSH检测认证,即National Institute for Occupational Safety and Health美国国家职业安全卫生研究所认证。口罩要求:按照HHS(美国卫生及公共办事部)法规,NIOSH(美国国家职业安全卫生研究所)将其认证的防颗粒物口罩分为9类。具体的认证则由NIOSH下属的NPPTL 实验室操作。要注意的是,N95不是特定的产品名称,只要符合N95标准,并且通过NIOSH审查的产品就可以称为“N95型口罩”。
欧盟
必要资料:提单,箱单,发票准入门槛:必需须获得CE认证证书。CE认证是欧盟实行的强制性产品安全认证制度,目的是为了保障欧盟国家人民的生命财产安全。口罩要求:在欧盟口罩属于PPE个人防护用品,医用口罩对应的欧盟标准是EN14683。
澳大利亚
必要资料:提单,箱单,发票准入门槛:须通过澳洲的TGA(治疗商品办理局)注册,符合标准规范:AS/NZS 1716:2012,此规范是澳大利亚和新西兰的呼吸庇护装置标准。TGA(治疗商品办理局)是澳大利亚的治疗商品(包括药物、医疗器械、基因科技和血液制品)的监督机构。口罩要求:AS/NZS 1716:2012是澳大利亚和新西兰的呼吸庇护装置标准,相关产品制造流程和测试必需符合本规范。
各国注册、认证简要办理流程
美国NIOSH认证
需按照NIOSH的指南实施,企业需寄送样品至NIOSH实验室实施测试,同时提交技术性资料(包罗质量体系部分资料)至NIOSH文审,只有文审和测试都通过,NIOSH才核发批文。主要测试指标包括呼气阻力测试、呼气阀泄漏测试、吸气阻力测试、过滤效率测试。
美国FDA注册
值得注意的是,对Ⅰ类产品,企业向FDA递交相关资料后,FDA只进行公告,并无相关证件发给企业。对Ⅱ、Ⅲ类器械,企业须递交PMN或PMA,FDA在公告的同时,会给企业以正式的市场准入批准函件(Clearance),即允许企业以本身的名义在美国医疗器械市场上直接销售其产品。
欧盟CE注册CE认证流程:① 认证申请——企业提供产品的技术资料,认证机构按照资料确定适用指令和标准;① 签署合同——企业和认证机构签署CE标识表及标识认证合同;② 产品预检——认证机构将样品送至授权的相关实验室测试;③ 产品终检——企业对产品进行调整,补齐相关手续,实验室给出最终检测报告;④ 企业整改——企业按照终检报告进行整改;⑤ 技术评审——实验室对产品进行技术评审;⑧ 证书签发——产品评审合格,由欧盟授权的公告机构给产品签发证书。
日本PMDA注册
1. 准备阶段。确定产品分类(I,II特殊控制,II类控制,III,IV)和产品JMDN编码,选择MAH(日本持证方);2. 制造商向PMDA注册工厂;3. II类特殊控制产品向授权认证机构PCB申请QMS工厂审核,其他II类产品和III类IV类产品向PMDA申请QMS工厂审核,并获得QMS证书;4. 申请Pre-Market Apporval证书,II类特殊控制由PCB发证,其他II类产品和III类IV类产品控制由MHLW(厚生劳动省)发证;5. 支付申请费用;6. 注册文件整改,注册批准;7. 所有类别产品均需要MAH向RBHW(厚生省地区机构)进行进口通报注册后才能进口销售。
韩国KFDA注册
韩国卫生福利部(MinistryofHealthandWelfare,MHW),简称卫生部,主要负责管食品、药品、化妆品和医疗器械的办理,是最主要的卫生保健部门。依照《医疗器械法》,韩国卫生福利部下属的食品药品安全部负责对医疗器械的监管工作。KFDA注册流程为:1. 确定产品分类(I,II,III,IV),选择KLH(韩国持证方);2. II类产品需申请KGMP证书和接受现场审核,II类产品一般是授权的第三方审核员,并获得KGMP证书;3. II类产品需要送样品到韩国MFDS授权的实验室进行韩国标准的测试;4. 由KLH向MFDS(韩国食品药品安全部)提交技术文件(检测报告,KGMP证书等),进行注册审批;5. 支付申请费用;6. 注册文件整改,注册批准;7. 指定韩国代理商和经销商,产品销售。
澳大利亚TGA注册
依据Australian Therapeutic Goods (Medical Devices) Regulations 2002,澳大利亚对医疗器械分为I类,Is and Im, IIa, IIb, III类,产品的分类几乎和欧盟分类一致,如产品已获得CE标识标记标帜,则产品类别可以按照CE分类。值得注意的是,如已经获得欧盟公告机构(Notified Body)签发的CE证书,是可以被TGA认可的,并可以作为满足澳大利亚安全法规的重要注册资料。
如何才能及时的把握这波红利,有效的开发到有需求的户呢?可以试试图灵搜,图灵搜是基于谷歌地图开发海外精准用户,精准获取客户名称、网站、邮箱外。还可以匹配海关数据筛选点亮进口商,决策人挖掘(找CEO、找采购),领英群加好友等群控功能进行领英营销
接下来,教大家如何快速积累客户,找到国外精准采购商,
@guangjiela.com
打开图灵搜,我们可以搜一次性医疗用品,医疗耗材,医疗器械贸易商,制药企业,医疗中心\医院\诊所\健康护理中心医疗服务行业等客户都需要口罩,
有了联系方式我们就可以写一封开发信过去和采购商建立联系,或者点击in进入个人领英主页添加好友,通过邮件和领英和客户建立联系,这里就先说部分操作,具体可以自己去试试。
杭州旅游一日攻略 收藏这篇就够了
“上有天堂,下有苏杭”, 杭州有多美想必大家在网上看到的视频和图片数不胜数,那么如何在一天内游玩杭州呢?以下这些精华景点,记得收藏打卡哦!
杭州西湖
西湖
最爱湖东行不足,绿杨阴里白沙堤。这是白居易笔下的西湖,白居易整修西湖留下的白堤也是今天很多游人踏足西子湖上的第一步。来杭州不游西湖,简直是白来。
白堤
西子湖是座落杭州西城的一颗光彩夺目的明珠,亲身体会苏东坡笔下“浓妆淡抹总相宜”的西湖景色。西湖风景秀逸兼具山水之胜、园林之美,景致秀美使人陶醉不已,是国家首批5A景区。
西湖
从白堤到苏堤的一段是西湖的精华。包括断桥残雪,孤山,曲院风荷,苏堤春晓,苏堤的另一头是花港观鱼,这都是大名鼎鼎的景点。
河坊街
这里有包括胡庆余堂和其他茶文化、药文化、食文化等众多百年老字号商铺,也有各种民间艺人手作店及市井民俗小摊,充分体现了市井民俗风情特色。在这里感受南宋街区特色风情,也可以品尝到杭州特色小吃。
河坊街
灵隐寺
灵隐寺自不必多说,杭州最著名的寺院之一。飞来峰和米勒石刻,冷泉溪水,都是灵隐禅宗之地的有名点睛之笔,灵隐寺香火旺盛,虔诚的氛围也很浓重。
灵隐寺
美食
在杭州,名点小吃当然是必不可少的,南宋定胜糕、片儿川面这些街边小吃可以在游览当中尽情品尝,夜幕降临,该是来一顿大餐的时候了,西湖醋鱼、龙井虾仁、宋嫂鱼羹这些地道杭州菜可不得不享受!西湖醋鱼胸鳍竖起,鱼肉嫩美,带有蟹味,龙井虾仁色如翡翠白玉,透出诱人的清香,食之极为鲜嫩,光是描述就能让人口水直流“三千尺”。
南宋定胜糕
西湖醋鱼
龙井虾仁
旅游从来都不是一件困难的事,不忧时间,别愁地点,只要你想,就来一场干脆利落的自由之行吧!
|npm相关、看这篇就够了
npm相关 口罩出口指南 收藏这篇就够了 最全 杭州旅游一日攻略 看这篇就够了