关于npm:npm-install-执行后打印的-reify-rxjs-timing-Completed-是什么意思

如图: 在解释 reify:rxjs: timing... Completed in 30389 ms 这个 npm 装置过程中呈现的信息之前,咱们须要对 npm (Node Package Manager) 有一个根本的理解。npm 是 JavaScript 的包管理工具,次要用于 Node.js 中包的装置、分享及治理依赖关系。npm 通过一个名为 package.json 的文件来治理一个我的项目的依赖。当你在我的项目目录下执行 npm install 命令时,npm 会依据 package.json 文件中列出的依赖,从 npm 仓库下载并装置这些包到我的项目的 node_modules 目录下。 当初,让咱们聚焦于 reify:rxjs: timing... Completed in 30389 ms 这条信息。这条信息实际上蕴含了几个要害局部:reify、rxjs、timing 和 Completed in 30389 ms。 reify 这个词在 npm 的上下文中指的是 npm 在解决依赖树时将依赖项实体化的过程。简而言之,就是 npm 把你的 package.json 文件中申明的依赖及其版本号,转换为理论装置在 node_modules 目录下的物理文件的过程。这一过程波及到计算依赖版本、解析依赖抵触以及最终下载并装置这些依赖包。rxjs 是 Reactive Extensions For JavaScript 的缩写,是一个应用可察看序列来编写异步和基于事件的程序的库。在这个上下文中,rxjs 指的是正在被 npm 解决的具体依赖包的名称。timing 示意 npm 正在记录某个过程的工夫。npm 在执行各种工作时,会测量并输入这些工作所破费的工夫,这有助于开发者理解装置过程中工夫耗费的状况。Completed in 30389 ms 明确通知咱们 rxjs 的解决(即从计算依赖、解析、下载到装置)共破费了 30389 毫秒,也就是大概 30.4 秒。这个工夫包含了从 npm 仓库下载 rxjs 包及其依赖、解压这些包以及将它们装置到 node_modules 目录中的总工夫。这条信息对于了解我的项目的依赖装置过程及其性能有重要意义。例如,如果你发现装置某个包破费了异样长的工夫,这可能是因为网络连接问题、npm 仓库的性能问题,或者是因为该包有大量的子依赖须要被同时装置。通过这种形式,开发者能够更好地诊断和优化我的项目的构建工夫。 ...

March 1, 2024 · 1 min · jiezi

关于npm:patchpackage极简使用记录

用处保留node_modules文件夹中对包的批改,防止重新安装依赖时被重置。 示例物料筹备:一个你想要批改的npm包,这里用refanbanzhang这个包来演示。 操作流程: 定位到refanbanzhang包中并进行批改。装置npm install patch-package。执行npx patch-package refanbanzhang。重新安装npm install refanbanzhang。启动我的项目npm start。注意事项暂无

February 29, 2024 · 1 min · jiezi

关于npm:踩坑笔记项目出现Permission-denied

Permission denied是权限没设好, 解决的方法:到我的项目父级或更下级,对其我的项目进行权限设置$ sudo chmod -R 777 myResources其中-R 是指级联利用到目录里的所有子目录和文件777 是所有用户都领有最高权限

February 27, 2024 · 1 min · jiezi

关于npm:如何使用Github-Actions发布npm包

如何应用Github Actions公布npm包作者:Herrylo 本文蕴含本地公布npm包公布流程, 和 github action主动公布npm包流程,帮忙你更好的公布本人或公司的npm包。 本地公布npm包公布本地npm包首先须要初始化npm,设置npm源,登录npm,公布npm 初始包npm init生成 package.json包,如下是我的 package.json配置: { "name": "vuepress-plugin-md-tags", // 包名 "version": "1.0.7", // 版本 "description": "vuepress@1.x plugin", // 形容 "main": "index.js", // 入口文件 "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { // 仓库 "type": "git", "url": "https://github.com/HerryLo/vuepress-plugin-md-tags.git" }, "keywords": ["vuepress@1.x", "vuepress-plugin", "tags"], // 关键字 "author": "herrylo3", // 作者 "license": "ISC", // license "bugs": { "url": "https://github.com/HerryLo/vuepress-plugin-md-tags/issues" }, "homepage": "https://github.com/HerryLo/vuepress-plugin-md-tags"}设置npm源npm config set registry https://registry.npmjs.org/或者nrm set npm如果你公布包到 私有npm平台,设置 https://registry.npmjs.org/即可,如果是公有平台,记得设置公有npm源。 ...

September 11, 2023 · 1 min · jiezi

关于npm:npm安装依赖时出现Peer-Dependencies冲突报错

报错内容报错起因:因为装置的依赖peerDependency和原先已装置的依赖有抵触While resolving: uni-preset-vue@0.0.0Found: vue@3.2.47node_modules/vue peer vue@"^3.2.25" from @vitejs/plugin-vue@4.3.4 node_modules/@vitejs/plugin-vue ...Conflicting peer dependency: vue@3.3.4node_modules/vue peer vue@">= 2.5 < 2.7" from @vue/composition-api@1.7.2 node_modules/@vue/composition-api peerOptional @vue/composition-api@"^1.4.0" from pinia@2.0.34 node_modules/pinia pinia@"2.0.34" from the root projectFix the upstream dependency conflict, or retrythis command with --force or --legacy-peer-depsto accept an incorrect (and potentially broken) dependency resolution.解决方案在装置命令前面加上--force 或者--legacy-peer-deps,让它疏忽这个抵触@REM npm 装置npm i pinia@2.0 --legacy-peer-deps@REM node 装置yarn add pinia@2.0 --legacy-peer-deps留神:这样装置并不能真正解决问题,在之后装置其余包的时候还是须要加上这个后缀 先在package.json文件中将要装置的依赖加上,而后删除node-modules目录和package-lock.json文件,重新安装依赖,让npm install时去从新匹配依赖

September 11, 2023 · 1 min · jiezi

关于npm:Node-opensslErrorStack-错误解决方法记录

从Git仓库中下载了一个老我的项目,应用npm install 装置后没有问题,当我应用npm run dev 的时候遇到了 OpenSSL 相干谬误,例如 opensslErrorStack: ['error:03000086:digital envelope routines::initialization error'] 网上找了一下相干信息,而后顺利解决了,记录分享给大家 问题起因:这种谬误通常与 Node.js 版本和 OpenSSL 版本之间的兼容性问题无关。某些 Node.js 版本可能与特定版本的 OpenSSL 不兼容,导致加密或平安相干的性能呈现问题。 解决方案:首先,确认你 Node.js 和 OpenSSL 版本。能够通过以下命令查看版本: node -vopenssl version如果发现 Node.js 版本与 OpenSSL 版本存在兼容性问题,能够尝试以下解决方案: 在你的我的项目的 package.json 文件中的 scripts 局部,增加一个新的脚本,比方 dev: "scripts": { "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", }或者在 Linux 或 macOS 零碎中,应用以下命令: "scripts": { "dev": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", }这里的 dev 是你理论的启动脚本名称。 保留 package.json 文件。 在终端或命令提示符中,导航到我的项目目录。 ...

August 25, 2023 · 1 min · jiezi

关于npm:关于npm你知道多少

npm是Node.js的包管理器,用于装置、治理和共享JavaScript代码包。它是Node.js生态系统中最受欢迎的工具之一。 <!-- more --> 关上一个软件包的文档页面如果你想看下lodsh深拷贝的应用办法,你会怎么做?关上谷歌/百度搜寻下吗? 事实上,npm能够帮忙你疾速实现。你只须要运行npm docs [package]就能够间接关上package的文档 关上一个软件包的GitHub repo想晓得一个包的源代码,我能够只在github上搜寻包的名字吗? 答案是否定的,npm能够帮忙你疾速关上一个包的GitHub repo. 查看软件包是否有过期的依赖在你的我的项目中运行npm outdated命令,它将查看所有软件包的以后版本、所需版本和最新版本。 查看一个软件包的所有历史版本你晓得如何查看一个软件包的所有历史版本吗? 是的,咱们能够通过npm的在线网站做到这一点。https://www.npmjs.com/package/lodash?activeTab=versions 然而还有更简略的方法: 在你的我的项目中寻找有危险的包npm audit 容许开发人员剖析简单的代码,并查明特定的破绽和缺点。 npm audit fix 检测我的项目依赖中的破绽并主动装置须要更新的有破绽的依赖,而不用再本人进行跟踪和修复。 查看npm包的细节好吧!兴许这个命令不是很有用,但你能够用它来理解一个软件包的很多状况,如它的作者、分割信息等。 npm xmas当你运行npm xmas时,你会看到一棵圣诞树。 心愿本文对你有用,并给你带来会心一笑。如果你有任何问题或倡议,请在上面留言。 原文链接:https://javascript.plainenglish.io/as-a-front-end-engineer-8-...公号同步更新,欢送关注

June 28, 2023 · 1 min · jiezi

关于npm:npm-自动化发包方案与实现

1. 传统的发包模式1.1 版本公布传统的发包模式指用户在本地进行发包、版本升级的操作,因而所有的 cli 都是在本地执行。当咱们写好一个 npm package 之后,并且登录好 npm 后,就能够执行以下指令间接公布第一版: npm publish --access public1.2 版本迭代当进行了一些变更之后,能够手动去变更 package.json 的版本号,当然这是一种十分低效且不优雅的做法,手动变更版本号存在太多不确定的因素,比方改错版本号或跳过某个版本号;同时,个别咱们在生成一个新的版本后要打一个 tag 对以后版本进行留档,纯手动操作的话会有很多的工作量。因而咱们须要一个更加『靠谱』的迭代版本号的计划。 1.2.1 npm 版本标准在议论如何优雅的进行迭代版本号之前,咱们先来理解一下 npm 采纳的语义化版本号: npm 的语义化版本,共三位,以’.’隔开,从左至右顺次代表: 主版本(major)主要版本(minor)补丁版本(patch)举例来说:1(major).0(minor).0(patch) 当然有时某些包还存在预览版本,预览版本的版本号要与前三位版本号应用 - 进行距离,如: 1.0.0-11.0.0-alpha.11.0.0-beta.11.0.0-rc.1alhpa / beta / rc 这些并不是 npm 官网定义的 prerelease 前缀,你能够应用任何前缀,甚至 niconiconi,如何增加这些前缀,咱们前面会探讨到。对于版本变更的标准,举荐采纳以下策略: 代码状态等级规定版本样例首次公布新品公布以1.0.0开始1.0.0bug 修复,向后兼容补丁版本公布变更第三位数字1.0.1新性能,向后兼容次版本公布变更第二位数字,并且第三位数字重置为 01.1.0重大变更,不向后兼容主版本公布变更第一位数字,并且第二位和第三位数字重置为 02.0.01.2.2 应用 npm version 变更版本号npm 提供了 npm version 指令能够辅助咱们来进行版本迭代,假如咱们当初的版本是 1.0.0,应用 npm version 的各个参数进行版本升级,失去的后果如下: 对于个别的迭代,应用 major / minor / patch 即可: npm version major => 2.0.0npm version minor => 1.1.0npm version patch => 1.0.1如果你要公布预览版本(prerelease)的 package,你能够应用 premajor / preminor / prepatch 并联合 prerelease 来降级预览版本号: ...

June 6, 2023 · 4 min · jiezi

关于npm:如何编写一个健壮的-npm-包-京东云技术团队

无脑公布 npm比方老王我,用npm init新建一个包,改把改把,而后来个npm publish,so easy ✌️! Too young too naive, baby ! 请容我讲述一些公布过程中踩过的坑。 首先,算了也能够之后有空再说,咱们须要通读npm的配置文档。 package.json doc 通用性指定公布文件利用package.json中files字段精简公布体积。 { "files": ["dist", "lib", "module"]}若不指定files,每次发布会把所有不以.结尾的文件都公布进来,导致公布体积过大(node_modules默认也不会被公布)。 README.md作为主文档,加不加都会公布,package.json也是。 指定源代码{ "source": "src/index.ts", "repository": { "type": "git", "url": "https://github.com/yourname/yourproject.git" }}通常来说我是不在npm公布中包含源代码的,因而都没有加过source字段,只是用repository来告知一下git仓库地址即可。 如果仓库是外部仓库或私人仓库并不对外,则source字段就有用了,将源代码公布后可让人帮忙debug找问题。 留神如果有source,则files也要加上souce对应的文件或文件夹。 公布sourcemap一般来说咱们公布的都是通过编译的代码,为了给使用者不便调试,只有不是源码,都要有对应的sourcemap文件,例如公布了一个dist/index.js则也须要一个dist/index.js.map文件与之配套。 指定装置源如果你从来不用公有源,可跳过该项。 利用.npmrc指定装置源,用于以后我的项目与你的全局配置辨别开。 否则以后我的项目很可能指定的外部npm源,导致内部用户无奈利用lock文件装置。 例如 registry=https://registry.npmjs.org/准确指定dependencies、devDependencies、peerDependenciesdependencies要尽量少,只有在运行时的确用到才放进去。 依赖的版本号要清晰指明,如"react": "16.x || 17.x" 否则,如果指定了"react": "17.0.0",则在应用了react 16的我的项目中,会引入两份react,造成一些莫名其妙的问题。 这种状况,react应放到peerDependencies中。 指定公布指标如果你从来不在公有源公布,可跳过该项。 在package.json中指定公布地址,在以后包与全局配置不统一时十分必要。 { "publishConfig": { "registry": "https://registry.npmjs.org" }}sideEffects对应配置: { "sideEffects": false }作用:在打包时进行treeshake可依据是否应用而优化相干的代码。 如果sideEffects为true,则一旦引入,不论是否调用都不能被treeshake掉。 专用性类型配套无论针对哪个环境,目前自带类型曾经是既成事实的标配。 记得生成类型的.d.ts文件,并在package.json中指定。 { "types": "type/index.d.ts", "typings": "type/index.d.ts"}我个别会用一个专用的tsconfig.declaration.json来专门生成类型: { "extends": "./tsconfig.json", "compilerOptions": { "noEmit": false, "emitDeclarationOnly": true, "declaration": true, "outDir": "types" }}作为后端库package.json中指定main字段。 ...

May 25, 2023 · 1 min · jiezi

关于npm:你不知道的packagejson属性

概述package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象。其中很多属性能够通过npm-config来生成 <!-- more --> namepackage.json中最重要的属性是name和version两个属性,这两个属性是必须要有的,否则模块就无奈被装置,这两个属性一起造成了一个npm模块的惟一标识符。模块中内容变更的同时,模块版本也应该一起变动。name属性就是你的模块名称,上面是一些命名规定: name必须小于等于214个字节,包含前缀名称在内(如 xxx/xxxmodule)。name不能以"_"或"."结尾不能含有大写字母name会成为url的一部分,不能含有url非法字符 上面是官网文档的一些倡议: 不要应用和node外围模块一样的名称name中不要含有"js"和"node"。 It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)name属性会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url平安的字符在name中都不能应用,也不能以"_"或"."结尾name属性兴许会被写在require()的参数中,所以最好取个简短而语义化的值。创立一个模块前能够先到后边的网址查查name是否曾经被占用. https://www.npmjs.com/ # 公布一个包的时候,须要测验某个包名是否存在npm search <ModuleName>name属性能够有一些前缀如 e.g. @myorg/mypackage.在npm-scope(7)的文档中能够看到具体阐明 versionversion必须能够被npm依赖的一个node-semver模块解析。具体规定见上面的dependencies模块 description一个形容,不便他人理解你的模块作用,搜寻的时候也有用。 keywords一个字符串数组,不便他人搜寻到本模块 homepage我的项目主页url留神: 这个我的项目主页url和url属性不同,如果你填写了url属性,npm注册工具会认为你把我的项目公布到其余中央了,获取模块的时候不会从npm官网仓库获取,而是会重定向到url属性配置的地址。(原文档中用了 spit(吐)这个单词,作者示意他不是在开玩笑:) bugs填写一个bug提交地址或者一个邮箱,被你的模块坑到的人能够通过这里吐槽,例如: {"url" : "https://github.com/owner/project/issues","email" : "project@hostname.com"}url和email能够任意填或不填,如果只填一个,能够间接写成一个字符串而不是对象。如果填写了url,npm bugs命令会应用这个url。 license你应该为你的模块制订一个协定,让用户晓得他们有何权限来应用你的模块,以及应用该模块有哪些限度。最简略的,例如你用BSD-3-Clause 或 MIT之类的协定,如下: { "license" : "MIT" }你能够在https://spdx.org/licenses/ 这个地址查阅协定列表 。 和用户相干的属性: author, contributorsauthor是一个码农, contributors是一个码农数组。 person是一个有一些形容属性的对象,如下 like this: {"name" : "Barney Rubble","email" : "b@rubble.com","url" : "http://barnyrubble.tumblr.com/"}也能够按如下格局缩写,npm会帮着转换: ...

May 8, 2023 · 3 min · jiezi

关于npm:包管理pnpm-的一些坑总结

Mac 只有一个磁盘,装置后无需配置。如若配置,门路必须设置成绝对路径,比方 pnpm set store-dir "~/pnpm-store",门路不能写成 ./pnpm-store,否则每个文件夹下都有一个 /pnpm-store。Win 零碎能够依照官网配置。能够间接代替 npm,然而不能代替 yarn。 pnpm 基于 npm,yarn 则不是基于 npm。npm 和 yarn 是独立的、装置模式不同的工具。也就是说,如果我的项目原本是基于 yarn 的,应用 pnpm 会 install 失败,提醒短少各种包。即便手动把 yarn 须要的包补全了,如果 install 命令内蕴含了 yarn build,则也会失败。

April 27, 2023 · 1 min · jiezi

关于npm:NPM-实用命令与快捷方式

在 JavaScript 中,无论是老手还是专家都可能在命令行中应用过 NPM。在本篇文章中,我将会整顿超实用的 NPM 命令、快捷方式及技巧,帮忙 JavaScript 开发人员进步生产力和效率。  在这篇文章中,咱们将涵盖以下主题: npm 的定义。应用 npm 包管理系统管理应用程序依赖项,来公布或勾销公布包。按版本号安装包。package.json 和 package-lock.json 文件之间的区别。应用 npm 命令审核包安全性。 在开始之前,让咱们回顾一下什么是 NPM 以及如何应用它。  什么是 NPM?从概念上讲,NPM(Node Package Manager)相似于PiP(Python),RubyGems(Ruby on Rails),apt-get(Debian),rpm / yum(Red Hat/Fedora),CPAN(Perl)或PEAR(PHP)等工具。NPM 于 2010 年公布,是 Node.js 的包治理和散发零碎,Node 是一个用于构建服务器端应用程序的环境。其目标是应用简略的命令行界面在互联网上公布和散发 Node.js 包。近年来,它也被宽泛用于散发前端库,如 React 或 TailwindCss。应用 npm,用户能够在 npm 的网站上疾速找到用于特定目标的软件包、下载、装置或治理用户已装置的软件包。  如何应用 NPM应用 NPM 很简略,能够了解为像 Node 一样从命令提示符运行的另一个命令。举个例子,当初创立一个名为 tester 的目录,并应用以下命令初始化我的项目:npm init-yes。此文件夹中主动生成一个名为 package.json 的文件,此文件蕴含无关我的项目的所有信息。之后,执行以下命令:npm install ioredis  在这里,NPM 是命令行界面 (CLI) 程序,能够向其收回装置命令。 ioredis 是该命令的参数,这是用户与 NPM 的交互将采纳的个别模式。通过执行上一个命令,咱们将在 tester 文件夹中创立一个名为 node_modules 的新目录。这是形成 ioredis 模块的所有代码。  ...

April 24, 2023 · 2 min · jiezi

关于npm:安装npm报错时Could-not-resolve-dependency-npm-ERR

问题:装置npm报错时(Could not resolve dependency:npm ERR! peer monaco-editor@"^0.33.0" from react-monaco-editor@0.49.0/Fix the upstream dependency conflict, or retrynpm ERR! this command with --force, or --legacy-peer-deps) 解决办法:npm install --legacy-peer-deps

April 19, 2023 · 1 min · jiezi

关于npm:想要在npm上快速发包用vuesfcrollup工具即可细致图解操作流程

问题形容需要形容本文记录了应用vue-sfc-rollup工具,去将咱们封装的vue组件,发到npm上,以便于组件共享。 就npm发包而言,工具有很多,不过vue-sfc-rollup是一个轻量级的工具,可能疾速实现发包需要vue-sfc-rollup介绍官话介绍: vue-sfc-rollup is a CLI templating utility that scaffolds a minimal setup for compiling a Vue Single File Component (SFC) - or library of multiple SFCs - into a form ready to share via npm. It doesn't assume any particular flavor of CSS or docs generator, so you can use what you're already used to. It's the fastest way to produce npm-ready vue components! 艰深解释阐明: vue-sfc-rollup是一个脚手架模板工具,在vue语法中生产,制作,公布npm包,是最快的办法 NPM包地址:https://www.npmjs.com/package/vue-sfc-rollupGitHub地址:https://github.com/team-innovation/vue-sfc-rollup步骤记录第一步,筹备好要公布的组件假如我有一个组件,名字叫做myStar,就是一个盒子中搁置三颗星星,长相如下图: ...

March 15, 2023 · 1 min · jiezi

关于npm:解决npm出现的Conflicting-peer-dependencyxxxxxx

这个问题时因为npm的v7当前的版本都默认装置了peerDependency,它尽管解决了依赖装置的冗余的问题,但有时也会导致依赖的包版本与各个子项目依赖的包版本互相不兼容,所以装置时要加上--legacy-peer-deps npm install xxxx --legacy-peer-deps

January 30, 2023 · 1 min · jiezi

关于npm:如何利用极狐GitLab-轻松管理NPM依赖发布与更新

本文来自:任治桐 极狐(GitLab)  前端工程师NPM 是 Node.js 的包管理工具,用来装置各种 Node.js 的扩大。本文将分享如何通过极狐GitLab,让 NPM 依赖公布更新更加疾速和自动化,让你轻松治理依赖,领有更多工夫专一于外围工作! 少年小明之懊恼在开发团队日常工作中,不可避免的会依赖大量第三方模块;同时,团队外部也会公布一些公共模块到外部或内部源中,不便跨团队复用。但往往会遇到和小明一样的懊恼。 小明同学负责外部公共 NPM 模块公布和降级工作。他每天的工作是这样的: 1. 开发同学告诉小明某个公共模块代码有更新; 2. 小明打包外部公共模块; 3. 公布到 NPM 源; 4. 在开发群里告诉各个团队降级到最新版本。 慢慢的,每个团队都被繁琐小事缠身,低效: 开发同学须要常常查看依赖的 NPM 模块是否有更新;公共模块的保护同学更新代码后须要决定是否公布版本;版本更新后还须要告诉各个团队;各个团队还是容易呈现更新不及时、容易脱漏等问题。终于有一天,小明同学眉头一皱;计上心来:如果当前更新公共模块代码可能依据肯定规定,自动更新版本号→主动公布日志→主动公布到 NPM 源→主动将公司内所有依赖该模块的代码库更新为最新版本,岂不乐哉? 通过一番摸索,小明发现,通过极狐GitLab CI 和第三方工具联合,就能够达到目标。一起实际吧! NPM 主动公布-操作指南咱们晓得,NPM 包版本标准为 Semantic Versioning ,即为 major.minor.patch 格局数字组成。 那么,如果咱们能够辨认开发人员的 git commit message ,通过对提交信息进行形式化约定,就能够主动生成新的合乎 Semantic Versioning 的版本号。而后,将新版本号更新到咱们的 package.json 文件中,最初公布到 NPM 源中即可。 commitlint首先,咱们须要通过 commitlint 或相似工具,强制规范化团队的 git commit message ,通过如下命令将 commitlint 装置到我的项目中: yarn add --dev @commitlint/cli @commitlint/config-conventional# 设置 commitlint 配置文件应用 conventional configecho "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js咱们采纳 @commitlint/config-conventional 作为惯例配置,它默认采纳 Angular Commit Message 标准,也可自行批改。默认 git commit message 格局如下: <type>(<scope>): <short summary> │ └─⫸ 可选类型: build|ci|docs|feat|fix|perf|refactor|test|chore流水线配置之后,须要在极狐GitLab CI 流水线中执行 commitlint ,在我的项目根目录新建一个 .gitlab-ci.yml 文件,增加如下代码: # .gitlab-ci.ymlstages:  - lintworkflow:  rules:    - if: $CI_MERGE_REQUEST_IID    - if: $CI_COMMIT_TAG    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCHdefault:  image: node:16  cache:    paths:      - node_modules/      - .yarn.yarn_install:  before_script:    - yarn install --frozen-lockfile --check-files --cache-folder .yarnlint:commit:  extends: .yarn_install  stage: lint  rules:    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'  script:    - yarn commitlint --from ${CI_MERGE_REQUEST_DIFF_BASE_SHA} --to HEAD --verbose如果有不合乎 commitlint 标准的 git commit message,极狐GitLab CI 就会阻止该 MR 合入。 ...

January 17, 2023 · 1 min · jiezi

关于npm:npm-包-chalknext-被开发者投毒源码-SRC-目录被删除

一、事件简述1月5日,有开发者在 twitter 中发文称遭逢了名为 chalk-next 的组件投毒事件,该组件存在收集配置信息和删除本地文件的歹意逻辑,以后 NPM 仓库曾经下线了该组件。 chalk-next 组件的开发者也是 vue-admin-beautiful 我的项目的作者 chuzhixin,vue-admin-beautiful 我的项目在 GitHub 中领有 13.5K 的 star 数。 通过剖析,包含 chalk-next 在内,作者公布的 chokider-next、vue-plugin-rely 包中的相似逻辑被用于辨认、惩办盗版行为,此事件也在 V2EX 等开发者社区中引起较多探讨。 二、事件过程1月5日,@ewind1994 在 twitter 中发推文称发现了一个 PR(代码合并申请)试图针对他们 GitHub 我的项目投毒,该PR是将原有的chalk依赖批改为chalk-next,而chalk-next通过判断运行环境中的配置信息,在肯定条件下会删除当前目录下的特定目录文件(包含.vscode、src、public、.git、.svn、mock、node_modules)。 当天 19:05,在用户投诉后,NPM 官网仓库删除了 chalk-next 包,目前已无奈下载。 当天 19:11,在 V2EX 社区中有其余开发者发帖(https://v2ex.com/t/906834)形容了该事件相干信息 1 月 6 日 9:39,@chu1204505056 在推特中回应@ewind1994 1月6日 10:32,开发者 chuzhixin 在 GitHub 仓库(https://github.com/chuzhixin/...)中挂出一段阐明,宣称@ewind1994 始终在对其歹意攻打。 1月6日 11:27,开发者 chuzhixin 在AFFiNE我的项目中提出 issue(https://github.com/toeverythi...)质疑此前呈现PR的起因。 三、投毒包剖析通过剖析,该作者总共公布了 chalk-next、chokidar-next、vue-plugin-rely 三个 NPM 包都存在相似的删除文件逻辑。 ...

January 6, 2023 · 2 min · jiezi

关于npm:如何发布一个-TypeScript-编写的-npm-包

前言在这篇文章中,咱们将应用TypeScript和Jest从头开始构建和公布一个NPM包。 咱们将初始化一个我的项目,设置TypeScript,用Jest编写测试,并将其公布到NPM。 我的项目咱们的库称为digx。它容许从嵌套对象中依据门路找出值,相似于lodash中的get函数。 比如说: const source = { my: { nested: [1, 2, 3] } }digx(source, "my.nested[1]") //=> 2就本文而言,只有它是简洁的和可测试的,它做什么并不那么重要。 npm包能够在这里找到。GitHub仓库地址在这里。 初始化我的项目让咱们从创立空目录并初始化它开始。 mkdir digxcd digxnpm init --yesnpm init --yes命令将为你创立package.json文件,并填充一些默认值。 让咱们也在同一文件夹中设置一个git仓库。 git initecho "node_modules" >> .gitignoreecho "dist" >> .gitignoregit add .git commit -m "initial"构建库这里会用到TypeScript,咱们来装置它。 npm i -D typescript应用上面的配置创立tsconfig.json文件: { "files": ["src/index.ts"], "compilerOptions": { "target": "es2015", "module": "es2015", "declaration": true, "outDir": "./dist", "noEmit": false, "strict": true, "noImplicitAny": true, "strictNullChecks": true, "strictFunctionTypes": true, "strictBindCallApply": true, "strictPropertyInitialization": true, "noImplicitThis": true, "alwaysStrict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "noUncheckedIndexedAccess": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true }}最重要的设置是这些: ...

November 30, 2022 · 3 min · jiezi

关于npm:记一次-vue-npm-安装依赖报错解决

1、具体问题如下:npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency treenpm ERR!npm ERR! While resolving: [email protected]npm ERR! Found: [email protected]npm ERR! node_modules/webpacknpm ERR! peer [email protected]”^4.0.0 || ^5.0.0″ from [email protected]npm ERR! node_modules/html-webpack-pluginnpm ERR! peer [email protected]”^3.0.0 || ^4.0.0″ from [email protected]npm ERR! node_modules/script-ext-html-webpack-pluginnpm ERR! dev [email protected]”2.1.5″ from the root projectnpm ERR!npm ERR! Could not resolve dependency:npm ERR! peer [email protected]”^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0″ from [email protected]npm ERR! node_modules/script-ext-html-webpack-pluginnpm ERR! dev [email protected]”2.1.5″ from the root projectnpm ERR!npm ERR! Fix the upstream dependency conflict, or retrynpm ERR! this command with –force, or –legacy-peer-depsnpm ERR! to accept an incorrect (and potentially broken) dependency resolution.npm ERR!2、问题剖析npm版本过高 ...

November 8, 2022 · 1 min · jiezi

关于npm:NPM-自动更新版本号

本文首发于 YFun's Blog。前言ChenYFan 大佬的文章:SpeedUp!应用黑科技为你的网站提速 有提到过将 Hexo 博客的全副动态文件上传至 NPM 达到减速成果。 然而 NPM 版本号不能反复,而且为了精准命中缓存和避免边缘 @latest 缓存过长,就必须指定版本号。 自己在 我的图床解决方案 一文中应用的办法是 npm version patch。 但这个办法也有一些弊病,比方 patch 只会更新 z 位数的版本号,而且并不会上传至仓库,很可能会呈现版本号抵触导致上传失败。这就是为什么最初还须要从新推送 Git 提交。 试试看NPM 版本号遵循 semver 标准,格局为 major.minor.patch。 为了在获取最新版本号的时候不产生凌乱,我抉择先获取最新的版本号。 记得把 cky-blog-static 改成本人的我的项目名。const getVersion = async() => { const latestVersion = await fetch("https://registry.npmjs.org/cky-blog-static/latest").then(res => res.json()).then(res => { return res.version; }) return latestVersion;}获取到最新版本号后,就能够对版本号进行剖析。 以 1.4.7-b541af2ea284a39da0bbf63b88fdb65c 为例,先按 major.minor.patch 拆散。当然,也须要思考版本号后还有 build metadata 的状况。 const version = await getVersion();var verArray = version.split(".");verArray[2] = verArray[2].split("-")[0];为了版本号难看些,能够通过判断实现满十进一。 ...

November 5, 2022 · 2 min · jiezi

关于npm:npm-新型定时攻击或导致软件供应链安全风险

原题目: New npm timing attack could lead to supply chain attacks 原文链接: https://www.bleepingcomputer.... 据 Beepingcomputer 音讯,平安钻研人员发现了一种npm定时攻打,它会泄露公有软件包的名称,因而攻击者能够基于此公开公布歹意克隆软件包,以坑骗开发者应用它们。 该攻打的原理是利用在开发者搜寻公有软件包时与库中的软件包相匹配时返回“404 Not Found”谬误的渺小时间差。尽管响应工夫的差别只有几百毫秒,但这足以确定一个公有软件包是否存在,进而对包进行假冒。 企业为外部我的项目和某些软件产品创立公有软件包,以最大限度地缩小其开发团队陷入错别字攻打的危险,并窃密代码和性能。 企业让公有软件包始终处于私密状态是十分重要的,否则攻击者能够创立克隆或用有错别字的软件包以蛊惑企业员工下载并在软件我的项目中应用它。如果开发者和外部软件测试人员没有发现这一纰漏,产品中转终端用户从而造成供应链的平安危险。 在一份由Aqua威逼钻研团队出品的报告中指出,攻击者越来越关注软件供应链攻打,2021年针对软件供应链的攻打流动数量比今年翻了3倍。 定时攻打详情npm蕴含了一个 registry API,它容许用户下载已存在的软件包,并查看包是否存在以及在特定范畴内接管所有包的信息。当应用npm镜像仓库来下载不存在或者曾经设为私密的软件包时,网站会返回一个 404 HTTP 的错误代码,这意味着无奈找到软件包。 在npm中对一个API申请响应 404 Not Found Aqua通过应用该API查看他们在npm上创立的公有软件包是否存在,并比拟 404 HTTP 谬误与API查看不存在的包的响应工夫,从而发现了npm定时攻打。 钻研人员通过查看5次某个软件包名称是否存在来进行测试。他们发现,npm响应申请所需的均匀工夫存在差别,这使他们可能分辨出一个软件包是公有的还是不存在的。具体而言,当公有软件包存在时其均匀响应工夫是648毫秒,而当其不存在时响应工夫降落为101毫秒。 5次申请的响应工夫 钻研人员认为这是因为npm自身的缓存机制及API架构导致了这种信息泄露的可行性。 黑客能够尝试“全盲”字典式攻打,或者在指标组织的公开软件包中总结命名法则,以推导出可能的公有软件包名称。此外,在线信息中可能蕴含包的历史信息,所以攻击者能够利用它们来确定哪些公开包可能在起初会转为私密。 在后一种状况下,应用克隆包的潜在危险是较为荫蔽的,因为一个已经公开的包的旧正本可能仍保留足够的性能,并仍旧在软件产品中发挥作用。 GitHub 将不会修复这一问题Aqua 曾于2022年3月向 GitHub 报告这一bug,但在3月25日时被告知因为架构限度将不会修复它。“因为架构所限,咱们无奈避免因为确定npm中是否存在特定公有软件包而产生的定时攻打”。 钻研人员指出企业能够采取预防性措施,如常常在npm中检索可疑软件包,这些包常会以反复或类似的名字来蛊惑开发人员。此外,因为npm不容许在公开的仓库中上传同名软件包,企业能够创立与公有包类似或反复名字的公开软件包来阻止歹意包的创立。 总而言之,保护软件供应链平安是一项简单且极具挑战的工作,须要企业时刻关注软件开发各个阶段的平安。Seal 软件供应链防火墙为用户提供软件开发生命周期全阶段的端到端全局可视化,并且能疾速辨认和定位平安危险,依据破绽重大等级评分确定修复优先级。

October 20, 2022 · 1 min · jiezi

关于npm:npmyarn-start-error0308010Cdigital-envelope

如果报上面的谬误: error:0308010C:digital envelope routines::unsupported因为>=nodev17+当前的加密批改导致的,解决形式:1、降级<=16- 2、export或set NODE_OPTIONS=--openssl-legacy-provider,大概率是有效,倡议在package.json 设置 set NODE_OPTIONS=--openssl-legacy-provider: "start": "set NODE_OPTIONS=--openssl-legacy-provider && cross-env UMI_ENV=dev umi dev"留神:低于17的不必加,高于的加,否则会报错

October 10, 2022 · 1 min · jiezi

关于npm:还不知道npm私服一篇教会你搭建私服并发布vue3组件库到nexus

介绍继上一篇博客看了它!你也能轻松部署vue3组件库公布后,失去了很多小伙伴们的关注。 这篇还不晓得npm私服?一篇教会你搭建私服并公布vue3组件库到nexus,有别于上一篇,此篇博客介绍了如何将vue3组件库公布到私服,而不是公布到npm官网仓库。 日常工作时,出于保密性、开发便捷性等需要,或者是还在内部测试阶段,咱们可能须要将vue3组件库部署到公司的nexus中。咱们可能心愿部署vue3组件库的操作是CI/CD中的一环。 当初建木CI有了主动公布构件的官网npm节点,这所有都将变得非常简单。 节点:npm公布依赖包筹备工作装置建木,参考建木如何部署装置nexus搭建npm私服,创立用户、开启token验证、生成token1. 装置sonatype nexus# docker search nexus 搜寻nexus 下载量最高的那个sonatype/nexus3docker search nexus# 从docker hub中将sonatype nexus拉取下来docker pull sonatype/nexus3# 启动sonatype nexus并使其监听8081端口docker run -d -p 8081:8081 --name nexus sonatype/nexus3拜访搭建的nexus,能够看到如下界面,那么nexus搭建胜利 接下来,须要登录管理员(第一次登录会提供明码,而后要求改明码),创立Blob Stores的数据池地址,供前面仓库抉择 创立咱们的公有npm库,须要留神的是咱们要创立三个仓库(仓库名有辨识即可) group见名知意,是一个仓库组,蕴含多个具体的仓库(proxy、hosted)hosted本地仓库,就是咱们外部公布包的地址proxy代理仓库,会去同步代理仓库的npm包(即下载本地仓库没有的包时,会去代理仓库下载,代理仓库可设置为官网仓库) 创立proxy仓库,须要设置一些值 创立hosted仓库,须要设置一些值 创立group仓库,抉择咱们之前创立的两个仓库 功败垂成!查看这个hosted类型的地址,建木CI流程编排须要这个地址作为参数 还须要私服的token,须要先创立一个账户,用于本地生成token 开启nexus的用户token权限验证 须要本地设置hosted类型仓库地址,npm config set registry http://xxx:8081/xxx/npm_hosted 而后npm login获取token 增加token到建木的密钥,先创立命名空间npm,在该空间下创立账户的密钥wllgogogo_token 2. 筛选节点建木是一个节点编排工具,那么咱们须要筛选适合的节点实现一系列的业务操作 git clone节点应用git clone节点,将咱们须要部署的前端npm包我的项目从近程仓库上拉取下来。git clone节点的版本,咱们抉择1.2.3版本 如下图:拜访建木Hub能够查看节点详细信息,比方,git clone节点的参数,源码,版本阐明等信息 nodejs构建节点应用nodejs构建节点,会将咱们clone下来的我的项目进行build构建,本文咱们将用到1.4.0-16.13.0版本 如下图查看此节点的详细信息: 公布npm依赖包节点应用公布npm依赖包节点,会将咱们build后的我的项目公布到公服或私服,从1.1.0-16.15.0版本开始反对私服的公布 如下图查看此节点的详细信息: ...

October 9, 2022 · 1 min · jiezi

关于npm:安装nodejs准备开发的前期设置

设置淘宝源npmnpm config set registry https://registry.npm.taobao.org yarnyarn config set registry https://registry.npm.taobao.org 设置全局下载目录npmnpm config set prefix "D:\nodejs\npm\global"npm config set cache "D:\nodejs\npm\cache"yarnyarn config set global-folder "D:\nodejs\yarn\global"yarn config set cache-folder "D:\nodejs\yarn\cache"yarn config set prefix "D:\nodejs\yarn\bin"win10 PowerShell yarn 无奈辨认问题确保环境变量Path设置无误超管关上PowerShell 输出命令 确定Set-ExecutionPolicy RemoteSigned

October 2, 2022 · 1 min · jiezi

关于npm:解决npm和node升级步骤

1、官网下载node版本(http://nodejs.cn/),间接下载安装包装置,要想以前的版本(https://nodejs.org/zh-cn/down...)2、在C:\Users\administrater\AppData\Roaming 根目录下删除npm,npm-cache两个文件(如找不到roaming这个文件夹,能够在此电脑中搜寻npm,依据门路删除掉这俩文件夹)3、npm与node版本对照(https://nodejs.org/zhcn/download/releases/)],依据本人的node版本来更新npm 版本:npm -g install [email protected] 4、全局装置node-sass,执行上面的命令。 npm install -g sass-loader node-sass5、每个我的项目重装node-sassnpm rebuild node-sass npm不反对node版本方法链接:https://blog.csdn.net/m0_5160...node-sass装置和应用:https://www.cnblogs.com/yemin...

September 24, 2022 · 1 min · jiezi

关于npm:OSCS开源安全周报第9期开源组件命令执行漏洞集中爆发

本周平安态势综述OSCS 社区共收录安全漏洞39个,公开破绽值得关注的是 Apache OFBiz < 18.12.06 存在反序列化破绽(CVE-2022-29063),Apache Geode (Java8 环境) 不受信赖的反序列化破绽(CVE-2022-37021),GitLab 中 GitHub 导入 API 存在近程代码执行破绽(CVE-2022-2992)和 OpenSSL 存在命令执行破绽(CVE-2022-1292)。 针对 NPM、PyPI 仓库,共监测到 4 次投毒事件,波及 23 个不同版本的 NPM、PyPI 组件,投毒组件中绝大多数行为是尝试获取主机敏感信息。 重要安全漏洞列表Apache OFBiz < 18.12.06 存在反序列化破绽(CVE-2022-29063)Apache OFBiz 是一个用 Java 编写的企业资源布局 (ERP) 零碎。 在 Apache OFBiz 的受影响版本中 Solr 插件默认配置在 localhost 端口 1099 上并主动收回 RMI 申请。 攻击者通过在 localhost 上托管歹意 RMI 服务器,在服务器启动或重启时,能够运行任意代码。 参考链接:https://www.oscs1024.com/hd/M... Apache Geode (Java8环境) 不受信赖的反序列化破绽(CVE-2022-37021)Apache Geode 是一个数据管理平台,可在宽泛散布的云架构中提供对数据密集型应用程序的实时,统一的拜访。 Apache Geode 的破绽版本中存在不受信赖的反序列化破绽,在 Java 8上应用 JMX over RMI 时,攻击者可利用该破绽执行任意代码,甚至接管服务器。 ...

September 5, 2022 · 1 min · jiezi

关于npm:前端npm-run-build打包和tar压缩示例讲解

文章不易,请关注公众号 毛毛虫的小小蜡笔,多多反对,谢谢。 有任何问题都能够留言征询。 前端打包压缩和部署前端打包个别是通过执行npm run build命令,把动态资源都打包在dist目录。如下截图所示: 而后把打包后的文件部署到开发环境。 7ziplinux下个别是通过tar命令来压缩和解压。 但如果本地开发的电脑是windows,那就须要借助7zip来压缩dist目录了。 详情 请查看:毛毛虫的小小蜡笔

August 30, 2022 · 1 min · jiezi

关于npm:NRMNPM镜像源管理工具

一、介绍nrm是npm的一个镜像源管理工具,可帮忙疾速切换镜像源,方便管理。 二、装置在终端(Mac)或者cmd命令窗口(windows)输出命令,全局装置 npm install nrm -g查看版本 nrm -V三、nrm应用查看可供选择的源 nrm ls 查看以后源:nrm current切换源:nrm use <registry>增加源:nrm add <registry> <url> 例如: nrm add aaaaa https://aaaaa.com删除源:nrm del <registry>测试源的响应工夫:nrm test <registry>

August 12, 2022 · 1 min · jiezi

关于npm:selectionarea鼠标框选文件

最近做了一个相似于云盘的 Web文件治理 利用,须要具备一个鼠标框选文件打包下载的性能,这里记录一下前端的实现过程。利用UI 须要鼠标按下滑动时呈现线框,提取被框选的文件id,而后上传给服务端进行打包下载。 失常的网页,按下鼠标左键滑动是不会呈现线框的,这里发现了一个好用的库 selection-area。 具体内容大家能够参考官网文档。 上面是我写得小demo。 <template> <div class="parent"> <div v-for="(item,index) in list" class="child" :data-id="item.id" :key="index">{{ item.name }}</div> </div></template><script>import SelectionArea from 'selection-area';export default { name: "selection", computed: { list() { let arr = [] for(let i =0;i<=10;i++) { arr.push({name: `file-${i}`, id: i}) } return arr } }, mounted() { let config = { container: document.querySelector('.parent'), area: { class: 'custom-area' }, targets: '.child', touchable: true, autostart: true, callback: selection => { if (selection.length == 0) alert("empty selection"); else alert(`${ selection.length } items selected`); console.log(selection.map(item => item.dataset.id)) document.querySelectorAll('.child').forEach(item => { item.classList.remove('active') }) selection.forEach(item => { item.classList.add('active') }) } } let selectable = new SelectionArea(config); }}</script><style scoped>body { user-select: none;}.parent { width: 100%; height: 100vh; background-color: aliceblue; display: flex; gap: 10px; padding: 20px;}.child { width: 50px; height: 50px; background-color: antiquewhite;}.child.active { box-shadow: 0 0 2px 1px rgba(255,0,0,0.4);}.parent>>>.custom-area { background: rgba(52, 152, 219, 0.1); border: 1px dotted #2980b9;}</style> ...

July 13, 2022 · 1 min · jiezi

关于npm:npm-下载依赖使用阿里镜像

1、应用一次npm --registry https://registry.npm.taobao.org install express 2、长久应用 npm config set registry https://registry.npm.taobao.org // 配置后可通过上面形式来验证是否胜利npm config get registry// 或npm info express 3、通过cnpm应用 npm install -g cnpm --registry=https://registry.npm.taobao.org // 应用cnpm install express

July 10, 2022 · 1 min · jiezi

关于npm:d撒法发

我拥护撒啊啊啊啊啊啊啊

June 27, 2022 · 1 min · jiezi

关于npm:NPM使用指南

NPMNPM全称(Node Package Manager)。是应用JavaScript开发的一个包管理器,下载完Node.js就会主动下载NPM下载器。解决的痛点是下载代码不必满世界找网站.开发者是Ryan Dahl. NPM当初有专门的公司来治理。 下载软件包和命令行程序 下载完的代码放在node-module里 查看版本npm -v下载第三方包、命令行程序并应用第三方包npm install expressvar express = require("express");全局装置和本地装置npm install express # 本地装置npm install express -g # 全局装置全局装置:会多一个-g参数,这种模式会把包下到C://Users/80311104/AppData/Local/Microsoft/TypeScript/4.6/node_modules目录下,能够应用npm root -g查看所有的全局安装文件; 本地装置:安装包装置在我的项目的node_modules文件夹下;并且本地装置能够在前面增加--save-dev参数,将安装包的版本信息写入到package.json中的devDependencies字段 全局装置后还要本地装置我的项目默认会在两个中央找模块,NODE_PATH和我的项目的node_modules 文件夹下。如果只是全局装置,就会援用不到模块。PS:也有别的解决方案:1.复制全局装置模块文件夹到本地装置2.扭转环境变量NODE_PATH 一般来说,命令行程序会全局装置,其余包本地装置 能提供指令的包进行全局装置 npm install vue-cli -gvue -v # 这里提供了vue指令

June 13, 2022 · 1 min · jiezi

关于npm:npm与cnpm的区别

NPM我的博客 对于前端开发者而言,Node.js想必不会生疏,他为咱们提供了一个规范的运行环境,基于 Chrome V8 引擎。 而咱们的npm就是node中的一个包管理器,如同CentOS的yum。 应用场景如下: 1.从NPM服务器上下载他人编写的第三方包到本地应用。 2.从NPM服务器上下载并装置他人编写的命令行程序到本地应用。 3.容许用户将本人编写的包或命令行程序上传到NPM服务器上供他人应用。 然而,有时候,你们发现这个npm下载某些大一点的依赖包很慢,所以你会抉择换源,应用阿里的镜像或者淘宝的镜像。 CNPM实际上,咱们的cnpm是一个国内的包治理,是阿里巴巴淘宝团队将npm中的所有插件都同步到了国内的服务器。 然而,同时cnpm也是npm的一个插件。

May 25, 2022 · 1 min · jiezi

关于npm:dependencies-和-devDependencies-和-peerDependencies

写在后面在平时的我的项目开发中,咱们只须要晓得 dependencies 和 devDependencies 的区别就好了,环境依赖放在 devDependencies 里,非环境依赖放在 dependencies 。然而在波及到开发一个 npm 包的时候,咱们就须要深刻理解 package.json 里依赖相干字段的区别了。 dependenciesdependencies 翻译过去就是依赖的意思,咱们新开发一个包,外面如果齐全没有依赖任何第三方包,那么该字段就能够没有。然而实际上,这种状况很少,咱们新开发的包个别都会援用到一些第三方包,就是在外部 require 或者 import 一些第三方应用,那么此时,这些被咱们外部援用的第三方包就应该放在 dependencies 字段里,这是规范的地位。 那么在他人装置咱们的这个包的时候,npm 会如何解决 dependencies 字段里的依赖包呢? 首先,dependencies 字段里的第三方包是咱们这个包失常运行必须的包,因而,npm 为了保障咱们的包能被失常运行,就会去查看并确保这些第三方包必须有。 当援用咱们的包的工程里的 node_modules 里没有咱们的包的 dependencies 字段里的包时,npm 会在咱们的包被装置时,将咱们包里 dependencies 字段里的第三方包平铺装置在 node_modules 里。 (这也是为什么咱们在装置一个包的时候,node_modules 里呈现了一堆包的起因之一)当援用咱们的包的工程里的 node_modules 里有咱们的包的 dependencies 字段里的包时,npm 就开始查看了,查看版本,若现有的版本合乎能用,就不再反复装置了。比方本地工程里的版本是 1.0.0 ,咱们包的 dependencies 里要求的是 ^1.0.0 ,是合乎的。当援用咱们的包的工程里的 node_modules 里有咱们的包的 dependencies 字段里的包,但 npm 查看进去版本不匹配,比方本地工程里的版本是 1.0.0 ,但咱们包的 dependencies 里要求的版本是 ^1.0.2 , 显然版本不匹配,因为有的第三方包不同版本在 api 上有可能会有很大差别,因而 npm 为了确保咱们的包能失常工作,就会在咱们包里新建一个 node_modules ,在外面装置依赖。那看起来就是会有 node_modules 的嵌套,如下: ...

May 17, 2022 · 2 min · jiezi

关于npm:npm查看已安装的包全局和本地

查看全局已装置查看全局已装置(-g 的意思是 global 全局的意思) $ npm ls -g会发现,会把包的所有依赖也显示进去 加上层级管制显示深度:--depth 0 $ npm ls -g --depth 0这样就只会查到装置的包,并不会查到包的依赖。 查看我的项目中已装置查看以后我的项目已安装包(我的项目跟目录必须有 package.json 文件) $ npm ls同样也是会把所有包的依赖显示进去。同上,加上 --depth 0 就好了。 $ npm ls --depth 0如果只想显示生产环境依赖的包 $ npm ls --depth 0 --prod只显示开发环境依赖的包 $ npm ls --depth 0 --dev

May 15, 2022 · 1 min · jiezi

关于npm:pnpm

pnpm绝对于npm和yarn的劣势1.npm和yarn都采纳了扁平化的装包策略。如果咱们下载vue,执行npm i vue查看node_modules,能够看到咱们只装置了vue,node_modules中却呈现了这么多包,这些包都是vue中用到的依赖包,那么咱们能够间接应用第三方依赖,如果有一天vue更新版本忽然不必某个咱们用到的依赖了,那么就会报错。这种状况也称之为幽灵依赖。应用pnpm能够看到目录是很清晰的,咱们看到的node_modules中的vue文件夹只是一个软链接, 它的真正存储的中央在.pnpm 文件夹中。2.如果有10个我的项目应用npm或者yarn下载依赖包,那么会产生10个依赖包的正本占用磁盘。应用pnpm会将依赖包存储到对立地位,下面看到的.pnpm是虚拟存储目录,外面的文件是从对立地位做的硬链接,而和.pnpm同级的vue包是一个符号链接。 什么是符号链接符号链接也能够称为软连贯。是一类非凡的文件, 其蕴含有一条以绝对路径或者相对路径的模式指向其它文件或者目录的援用。就是给指标文件创建一个快捷方式,能够避免一遍又一遍地复制雷同的数据。应用软链接的形式生成的文件夹指向的是源文件,能够对源文件进行读写,删除软链接文件不会对源文件产生影响。 windows零碎实操 1 在D盘创立文件夹linkTest,linkTest里蕴含hello.txt,内容如下 2 在C盘创立软链接 依据提醒进行操作能够看到在C盘下生成了linkTest文件,那么咱们当初批改C盘下的linkTest文件查看D盘下的linkTest能够看到D盘下相应的文件也产生了变动 3 查看一个文件是否是软链接 什么是硬链接硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统应用的节点号链接起来。因而咱们能够用多个文件名与同一个文件进行链接,这些文件名能够在同一目录或不同目录。在windows中 1、硬连贯实用于在同一个卷的文件级别,不容许给目录创立硬链接;2、硬连贯是不能跨卷的,只有在同一文件系统中的文件之间能力创立链接在C盘创立一个文件夹外面蕴含hello.txt文件 尝试在D盘创立硬链接 尝试给目录创立硬链接 给文件创建硬链接文件内容如下 当我批改helloCopy之后保留之后查看hello.txt文件 当我删除hello文件之后helloCopy.txt是不会被删除的 查看.pnpm文件夹里的文件是否是硬链接红框内的只有是几那么就证实计算机文件系统应用的节点号被创立了几次硬链接

May 10, 2022 · 1 min · jiezi

关于npm:一文让你快速上手node包管理器

NVMnvm是nodejs的版本管理工具,能够在一个环境中同时装置多个nodejs版本(和配套的npm版本),并随时切换。 下载与装置点击下载NVM解压后开始装置查看nvm装置版本 nvm versionnvm下载太慢?查找nvm的装置门路 where nvm在该门路下,找到setting.txt在setting.txt文件最初增加两句代码,查看参考 node_mirror: https://npm.taobao.org/mirrors/node/npm_mirror: https://npm.taobao.org/mirrors/npm/保留setting.txt文件后,重启cmd继续执行其余操作应用NVM装置NodeJs查看可用node版本 nvm ls available依据理论需要,装置对应的node版本 nvm install v12.12.0显示本地曾经装置的node版本 nvm list应用指定版本的node,带星号是以后正在应用的版本 如果执行呈现问题,请尝试以管理员权限运行cmdnvm use 12.12.0卸载指定的node版本 nvm uninstall 12.12.0查看node版本 node -v镜像源查看以后应用的镜像源 npm config get registry批改镜像源 # 长期批改npm install 软件名 --registry https://registry.npm.taobao.org/# 全局批改npm config set registry https://registry.npm.taobao.org/也可应用nrm切换镜像源NRM治理镜像源装置nrm不仅能够疾速切换镜像源,还能够测试本人网络拜访不同源的速度。 npm install -g nrm列出以后可用的所有镜像源 nrm ls npm ---------- https://registry.npmjs.org/ yarn --------- https://registry.yarnpkg.com/ tencent ------ https://mirrors.cloud.tencent.com/npm/ cnpm --------- https://r.cnpmjs.org/ taobao ------- https://registry.npmmirror.com/ npmMirror ---- https://skimdb.npmjs.com/registry/应用淘宝镜像源 nrm use taobao测试访问速度 nrm test taobaoNode包管理器cnpm装置cnpm ...

May 4, 2022 · 1 min · jiezi

关于npm:使用nrm管理多个npm-registry地址

1、下载nrm: npm install -g nrm;2、增加多个registry地址: nrm add npm http://registry.npmjs.orgnrm add taobao https://registry.npm.taobao.orgnrm add <自定义名称例如:main> '本人定义的镜像源地址'3、应用nrm切换npm registry地址: nrm use taobao //应用淘宝地址nrm use npm //应用npm地址nrm use main //应用本人定义的镜像源====================== 分割线 ======================查看以后镜像地址:npm get registry;设置npm镜像地址:npm config set registry http://registry.npmjs.org;

April 24, 2022 · 1 min · jiezi

关于npm:uaparserjs漏洞引发的思考

原文:https://mp.weixin.qq.com/s?__... 微信公众号:毛毛虫的小小蜡笔最近跟敌人闲聊,聊起之前呈现的npm包破绽,导致能够在终端上进行投毒攻打、挖矿以及窃取明码。所以这里再次讲下相干问题。 ua-parse-js破绽呈现和解决收到各个群的音讯以及邮件告诉破绽和问题,如下截图所示: 前面看到npm上也有阐明,把有问题的版本以及打补丁的版本都列出来,高深莫测。 如下截图所示: 疾速解决问题首先须要晓得本人的我的项目,是否有援用ua-parser-js包。步骤: 1、查看我的项目的根目录下的package.json。 一眼看完,是没有援用的。 2、查看node_modules目录下的依赖包。 搜寻了下,发现还真有。 如下截图所示: 那是不是就慌了? 其实不必,不论是否有问题,都是要解决的。 尽管能搜到有援用,但还须要进一步看看是哪个包援用,怎么援用。 查看了代码的援用关系链,具体如下所示:steam-http依赖ua-parser-js node-libs-browser依赖steam-http eslint-import-resolver-webpack依赖node-libs-browser @vue/eslint-config-standard依赖eslint-import-resolver-webpack 也就是steam-http这个包依赖了ua-parser-js,但其版本不是有问题的版本。 而且是在devDependencies中援用的,那必定不会在打包后的代码外面了。 3、通过npm list xxx查看 的确是没有装置ua-parse-js的。 如下截图所示: stream-http的依赖跟下面搜寻进去的差不多,也是没有援用ua-parser-js的。 如下截图所示: 也能够通过npm list --all,查看我的项目下的所有包依赖状况。 拷贝到文本中,全局搜寻后,是找不到ua-parse-js的。 如下截图所示: 另外,也能够通过上面两种办法来查看1、通过查看yarn.lock文件 也是没看到ua-parser-js的。 而且stream-http下也没有ua-parsre-js。 如下截图所示: 2、通过grep命令来查看 grep -rnw . -e 'ua-parser-js' --include={yarn.lock,package-lock.json,package.json} 那这个steam-http为啥会援用ua-parser-js呢?通过在stream-http代码搜寻,发现ua-parser-js是在stream-http的test目录下的,node_modules目录下是没有的。 如下截图所示: 这个test文件夹是依赖包做测试用的。不会被引入到依赖stream-http的我的项目中。 其余版本号后面的^尽管当初没援用ua-parse-js,但假如援用了,但援用的版本不是有问题的版本,而是^0.7.18版本,那会不会有问题呢? 还是有问题的,尽管以后的版本不受影响,但一旦降级,就会更新到0.7.29版本,而这个版本是有问题的,所以降级的时候要指定版本号。 然而npm官网曾经去掉了有问题的版本,所以更新后只能到0.7.30版本,也就是不会降级到有问题的版本了。 ua-parser-js破绽是如何执行恶意代码的?是因为package.json外面的scripts字段。在npm install的时候,会执行一段payload。 npm install是有生命周期的。也执行的之前,会先执行什么,执行之后继续执行什么命令。 比照下有问题的代码,就一清二楚了。 如下截图所示: 最初公众号《毛毛虫的小小蜡笔》有疑难和问题,请留言。 如果感觉文章还能够,请点赞或珍藏,谢谢。

April 7, 2022 · 1 min · jiezi

关于npm:npm-ERR-network-timeout

问题有一次批改了几行简略的代码,而后把分支合并到develop,再主动触发gitlab的ci。但过了一会看日志,发现报错了。npm ERR! network timeout... 具体如下图所示: 初步剖析看提醒是说从源拉取依赖的时候,网络超时了。 初步判定是网络问题,所以想着一会再重试看看。 后果重试了好几次,后果都一样。 因为批改的性能须要在开发环境验证后,再部署到测试环境给测试验证,而后部署到预公布环境,所以还是比拟焦急的。 人是否成长,就看在应答突发紧急问题,导致停顿被卡,是否沉稳沉着解决问题。 但往往说起来容易做起来难。 我感觉能够这样: 在心里本人跟本人说几遍,从当初开始,给本人五分钟工夫,什么都别想,从头到尾再认真看看,找出问题所在。 因为之前公布和部署是没问题,而当初重试了几次还是不行。 我也问了后盾同时机器的网络等问题,说也没改变什么。 而我又没开明登录机器的权限,所以只能网上好好找找了。 各种说法1 npm set strict-ssl false设置代理: npm config set proxy http://proxy.example.com:3128npm config set https-proxy http://proxy.example.com:3128设置证书: npm config set cafile "<path to certificate file>"但我这边看过了,源站的https证书是没问题的,也没过期。 而且我这边曾经设置了npm config set strict-ssl false,也不必设置什么proxy代理,也没有什么cafile。 所以该办法不实用。 2 npm config set strict-ssl falsenpm install npm -g --ca="" // or npm config set ca ""这里ca的形式倒是能够试试,因为只是清空,而不像下面第一种办法那样,须要用到证书文件。 我这边批改后重试了ci,后果还是一样。 所以该办法不实用。 3 后盾在curl源站地址的时候,提醒证书问题如下图所示: 这个可能是curl只认CA证书,因为源站是Let's Encrypt证书,所以可在curl加上--insecure来验证源站。 所以问题仍然不是源站证书问题。 4 npm --without-ssl --insecure install但查看了npm官网,install是没有这两个参数的。 ...

April 6, 2022 · 1 min · jiezi

关于npm:前端随笔记npm-install-出错

在jenkins搭建流水线的时候,遇到npm install报错? 在npm6.x版本以前,当你须要运行npm script时,比方 npm install,须要手动设置 --unsafe-perm,否则npm会以一个non-root用户操作,导致操作失败。 npm install --unsafe-perm摘自 npm#unsafe-perm 也可能npm_module存在install超时失败,这时候能够长期用阿里云的资源库下载npm资源: npm install --registry=https://registry.npm.taobao.org

March 29, 2022 · 1 min · jiezi

关于npm:npm-常用方法总结

npm install当我的项目中存在package.json文件时,能够通过npm install下载以来环境npm install <package-name>通过模块名称下载相应模块npm install <package-name>@version通过模块名称及版本号下载相应的模块-- save 装置并增加条目到 package.json 文件的 dependencies。-- save-dev 装置并增加条目到 package.json 文件的 devDependencies。 npm update查看所有软件包是否有满足版本限度的更新版本npm update <package-name>查看指定软件包是否有满足版本限度的更新版本npm list查看安装包目录npm view <package-name> versions查看指定安装包历史版本npm view <package-name> version查看指定安装包最新版本npm uninstall <package-name>卸载指定安装包如果程序包是开发依赖项(列出在 package.json 文件的 devDependencies 中),则必须应用 -D 或 --save-dev 标记从文件中移除:注:如果须要全局操作请加上 -g,如有脱漏欢送补充

March 28, 2022 · 1 min · jiezi

关于npm:发布自己的包到npm

npm init依据提醒输出,会主动生成package.json文件(name,version和main入口 三项必不可少)新建utils.js 进行开发 能够新建test-utils.js进行自测 如果代码中应用import呈现报错:SyntaxError: Cannot use import statement outside a module 解决办法:在package.json中增加"type":"module" 新建readme.md文件阐明如果要引入第三方模块留神点:(1)npm i module-name --save(在dependencies下)(2)新增.gitignore文件,不须要提交node_modules文件登录 npm login会提醒输出用户名,明码,邮箱和邮箱一次性验证码公布 npm publish https://www.npmjs.com/package...

March 22, 2022 · 1 min · jiezi

关于npm:软件安装的源nodenpmyarn

node装置-npm-yarnnode装置https://nodejs.org/en/download/ 进入官网下载安装包(下载msi安装程序)电脑关上cmd--》 输出 echo %PATH% 查看环境变量是否增加输出 node-v 和 npm-v 确认node和npm的版本号更多具体操作能够看这篇文章 https://blog.csdn.net/weixin_...npm-yarn装置npm install -g yarn查看版本:yarn --version淘宝源装置,复制粘贴以下代码行到cmd运行yarn config set registry https://registry.npm.taobao.org -gyarn config set sass_binary_site http://cdn.npm.taobao.org/dis... -g 中途可能会呈现win10 powershell不容许运行脚本解决办法: 管理员关上powershellPS C:\Users\Administrator> set-ExecutionPolicy RemoteSigned= 执行策略更改 执行策略可帮忙你避免执行不信赖的脚本。更改执行策略可能会产生平安危险,如 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 帮忙主题所述。是否要更改执行策略? [Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮忙 (默认值为“N”): yget-ExecutionPolicy 这个能够查看是否改好罕用的NPM和YARN指令 NPMYAR初始化npm inityarn init默认装置依赖npm installyarn install装置某个依赖并保留npm install xxxx -saveyarn add xxxx装置全局依赖npm install -g xxxxyarn global add xxxx移除依赖npm uninstall xxxx -saveyarn remove xxxx更新依赖npm updateyarn upgrade xxxx运行指令npm runyarn run查看npm装置的依赖包版本以下分两者状况来讲尚未安装包npm view xxx依赖名 versions (查看所有可用版本)npm view xxx依赖名 version (查看最新版本)npm info xxx依赖名 (查看最新版本)曾经安装包npm ls xxx依赖名 (查看曾经装置的版本)npm ls jquery -g (查看全局装置的版本)

March 18, 2022 · 1 min · jiezi

关于npm:npm开发插件流程和项目中引入插件

一:vue我的项目创立1、通过vue create XX 创立 vue我的项目 留神:抉择2.0 或者3.0都能够。依照提醒即可 二:插件开发(参考https://cn.vuejs.org/v2/guide...;https://www.cnblogs.com/adouw...)目录构造: 1、src文件目录改为examples(非必须,为了不便测试)2、新建packages文件夹(放理论插件代码)src非必要,依照理论我的项目目录ac-textfield\packages\texefield\index.js(部分创立组件,单个install ac-textfield组件)ac-textfield\packages\index.js(全局引入插件,可能存在多个组件引入)留神:最终在我的项目中调用的组件名称是编写插件代码组件的名称,非文件名等。3、批改vue.config.js文件4、测试写的插件 ac-textfield\examples\main.js 导入和注册插件库ac-textfield\examples\App.vue(应用本人编写的插件)5、ac-textfield 目录下 npm run serve 运行 三:插件公布1、Package.jsonprivate改为false;Main:main属性次要应用在援用或者开发某个依赖包的时候须要此属性的反对,不然工程中无奈用import导入依赖包;不应用main属性的话咱们可能须要这样写援用:require("some-module/dist/app.js"main值生成形式:npm run lib); 2、新建.npmignore文件,打包须要疏忽的文件3、npm publish (须要用户名明码,目前公布到oppo源)http://admin.npm.oppoer.me/-/...(oppo npm源)四:我的项目中调用插件(vue.use须要在new vue实例之前调用)activity-admin(一般vue我的项目)1、装置编写的插件npm i XXX -D2、我的项目中引入3、应用browser_pager_render(nuxt.js我的项目引入插件)1、装置编写的插件npm i XXX -D2、front\plugins 目录下新建ac-textfield.js3、front\nuxt.config.js plugins 配置中增加ac-textfield.js(留神ssr须要设置为false)4、应用插件

March 11, 2022 · 1 min · jiezi

关于npm:nvm-npm-i-Unexpected-token-报错问题解决

1. 呈现问题当通过nvm切换nodejs版本为16以上时,npm install [package]报错:Unexpected token '.' 2. 问题起因该问题不是npm的问题,也不是nodejs的问题,是nvm-windows的问题。 3. 解决问题nvm-windows曾经更新版本解决了这个问题我是通过更新nvm-windows到版本1.19解决了这个问题 1. 蠢笨计划返回github从新下载最新版本nvm-windows而后重新安装nvm-window 2. 疾速计划返回github 下载nvm更新包下载nvm-update.zip,而后本地间接解压,双击运行抉择更新的版本即可 4. 留神点!nvm更新实现后,呈现问题的nodejs版本须要uninstall重装能力解决问题 如果解决了让你正在挠头的问题,托付点个赞啦!

March 3, 2022 · 1 min · jiezi

关于npm:淘宝旧镜像源快要停止服务了

在日常工作中,未免大家的镜像源不一样,每次提交代码后,都有一堆堆的lock文件只是镜像源不一样,对于一些小心谨慎的同学可能还会一个一个看哪些更新,,会有一些额定的烦脑,最常见的大家最罕用的就是淘宝镜像了。 而在淘宝镜像官网也声称:老 [http://npm.taobao.org] 和 [http://registry.npm.taobao.org] 域名将于 2022 年 05 月 31 日零时起进行服务 在这个切换的过程中就有更多的存在有的小伙伴切换有的小伙伴没有切换的状况,笔者开发了一个npm包发现在应用旧的镜像时,会主动切换至最新的淘宝镜像源,也失去了作者的 应用阐明: 应用在 package.json 文件的 scripts 中增加 preinstall: { "scripts": { "preinstall": "npx please-update-cnpm" }}成果当应用 npm i 装置依赖时,如果不是公司镜像源 提醒切换。 备注: 如果不想看到 npx: 1 装置胜利,用时 xxxx 秒,能够应用 --quiet 选项(或者 -q): { "scripts": { "preinstall": "npx -q please-update-cnpm" }}备注: 强制镜像源: { "scripts": { "preinstall": "npx please-update-cnpm -f" }}成果当应用 npm i 装置依赖时,会提醒须要切换镜像源,不切换会报错。

March 3, 2022 · 1 min · jiezi

关于npm:MacBook-npm卸载重装

因为不出名的起因,npm崩掉了,任何命令都用不了,而我又没方法解决,于是决定用最粗犷的办法,卸载重装。但没想到卸载重装也遇到了很多问题。 npm是在装置node的时候携带下载的,所以卸载npm要连带node一起卸载,重装也是。也就是说其实是node的卸载与重装。 翻阅了各大论坛和各种解决办法,发现多多少少都不太适宜我这种脑子简略的人。而后忽然发现一种,命令简略清晰地解决办法,brew!(当然此办法只实用装置了brew的同学)很偶尔的试了一下,很偶尔的发现,我不晓得什么时候装置了brew。 注释开始。。。(此过程全副在终端进行) brew uninstall node简略吧,卸载实现。当然不是彻底清除,还有连带的一些文件须要清理。 cd /usr/local/bin sudo rm -rf /usr/local/bin/npm sudo rm -rf /usr/local/bin/nodels -las 认真查看,全局装置的npm包个别会在这个目录下创立软连贯,发现就删除还有些其余清理 sudo rm -rf /usr/local/share/man/man1/node.1 sudo rm -rf /usr/local/lib/dtrace/node.d sudo rm -rf ~/.npm这样就彻底清除完啦,接下来就是装置 brew install node装置完结,测试一下node -v,有版本号,装置胜利,再测试一下npm -v。。。完蛋。又出问题了 npm: command not found于是我又翻啊翻啊,有说重启的,有说别用brew装置,卸载了官网重下的,终于让我给找到了。应该是brew下载的npm并没有放在bin下的npm,所以能够先找一下npm在哪儿。 find / -name npm或当npm不存在时,查问npm-cli.js find / -name npm-cli.js个别第一条进去的就是npm/npm-cli.js地位,我查出来的地位在/usr/local/Cellar/node/17.6.0/libexec/lib/node_modules/npm/bin/npm-cli.js而后用ln命令链接这个文件和bin下的npm,不必复制过去占用磁盘空间 ln -s npm的门路 /usr/local/bin/npm而后在尝试一下,npm -v,胜利!!!谢谢巨人们的肩膀~ 参考链接: 我应用的办法 https://www.jianshu.com/p/829...https://segmentfault.com/q/10...其余参考 https://segmentfault.com/a/11...https://blog.csdn.net/shiquan...

March 2, 2022 · 1 min · jiezi

关于npm:pnpm-记录

什么是pnpm?pnpm和npm/yarn一样是一个包管理器 pnpm长处1、打包速度快到飞起来2、磁盘空间利用十分高效,不会反复装置同一个包、pnum不会把所有包平铺在node_modules里,理论node_modules上文件只是个软连贯,它会造成一个到第二个目录的一个软连贯(相似于软件的快捷方式),这样 node 在找门路的时候,最终会找到 .pnpm 这个目录下的内容。 pnpm毛病:以下状况下不兼容1、Electron 利用无奈应用 pnpm2、部署在 AWS Lambda 上的利用无奈应用 pnpm 命令和npm差不多官网可查看官网作者对于不兼容探讨

January 21, 2022 · 1 min · jiezi

关于npm:设置npm源为淘宝镜像

因为有些包须要翻墙或者是境外的服务器,所以应用惯例的npm 装置形式有可能装置很慢或者装置失败,所以淘宝就帮咱们把一些须要翻墙的包同步到了国内服务器,所以应用淘宝镜像装置速度会很快。 有几种形式: 一、只是长期应用npm install --registry=https://registry.npm.taobao.org //(多个包装置)npm --registry https://registry.npm.taobao.org install express//(单个包装置,express为某个具体包名)某个具体的包 二、应用cnpm 代替 npm 装置cnpm是阿里默认安装包的工具,平时应用npm install的形式改为cnpm install即可 1、首先装置cnpm $ npm install -g cnpm --registry=https://registry.npm.taobao.org2、检测cnpm版本,如果装置胜利能够看到cnpm的根本信息。 cnpm -v3、当前装置插件只须要应用cnpm intall即可 三、通过更改npm默认下载源的形式如果不想更改为cnpm的形式,能够采纳批改npm配置的模式 npm config set registry https://registry.npm.taobao.org/查看是否批改胜利 npm config get registry四、复原为默认的npm下载方式npm config set registry https://registry.npmjs.org/

January 20, 2022 · 1 min · jiezi

关于npm:Flowable实战七用户和组

 在流程中,最重要的参与者是用户。流程定义了工作何时须要用户参加,什么用户能够参加。 组能够了解为咱们常说的角色。 Flowable中内置了一套简略的对用户和组的反对,身份治理(IDM IDentity Management),但从Flowable V6起,该组件从Flowable引擎模块中抽出。这是因为它不是Flowable引擎的核心内容,而且在很多企业应用中,经常须要联合现有利用零碎的用户和组,并不应用或须要Flowable提供的用户和组。 一、BPMN2.0 指派用户和组 用户和组次要在用户工作(user task)中应用。当流程执行达到用户工作时,会为指派至该工作的用户或组的工作列表增加一个新工作。 1.1 指派用户 用户工作能够间接指派(assign)给用户。 <userTask id="theTask" name="重要工作"> <humanPerformer> <resourceAssignmentExpression> <formalExpression>jinyangjie</formalExpression> </resourceAssignmentExpression> </humanPerformer> </userTask> 只能指定一个用户作为工作的humanPerformer。在Flowable术语中,这个用户被称作办理人(assignee)。领有办理人的工作,在其他人的工作列表中不可见,而只能在该办理人的集体工作列表中看到。 下面的规范用法比拟轻便,应用Flowable自定义扩大以缩小复杂度。 <userTask id="theTask" name="重要工作" flowable:assignee="jinyangjie"/> 通过TaskService获取指定用户待办理的工作 List<Task> tasks = taskService.createTaskQuery().taskAssignee("jinyangjie").list();1.2 指派潜在用户 有时候,咱们并不知道工作的具体办理人是谁,但晓得哪些人是潜在的办理者。比方销假申请时,咱们能够向部门经理或者项目经理申请,只有他们中的一个办理审批即可。 在流程中,应用potentialOwner(潜在用户)构造指派用户的候选工作列表。 <userTask id='theTask' name='重要工作' > <potentialOwner> <resourceAssignmentExpression> <formalExpression>user(jinyangjie)</formalExpression> </resourceAssignmentExpression> </potentialOwner> </userTask> Flowable自定义扩大: <userTask id="theTask" name="重要工作" flowable:candidateUsers="jinyangjie, zhangsan" /> 获取潜在工作,或者说候选工作列表的办法: List<Task> tasks = taskService.createTaskQuery().taskCandidateUser("jinyangjie"); 在候选列表中,当其中一个潜在用户申领(claim)工作后,即代表该工作曾经指定由申领人办理。 1.3 指派潜在组 <userTask id='theTask' name='重要工作' > <potentialOwner> <resourceAssignmentExpression> <formalExpression>group(leader)</formalExpression> </resourceAssignmentExpression> </potentialOwner> </userTask> Flowable自定义扩大: ...

January 14, 2022 · 1 min · jiezi

关于npm:Flowable实战六集成JPA

 上文提到,Flowable所有的表单数据都保留在一张表(act_hi_varinst)中,随着工夫的推移,表中数据越来越多,再加上数据没有构造优化,查问应用效率会越来越低。 在Flowable,能够通过集成JPA解决上述问题。JPA把表单数据保留在用户自定义的表中,有利于查问优化。 一、什么是JPA JPA是Java Persistence API的简称,中文名Java长久层API,是JDK 5.0注解或XML形容对象-关系表的映射关系,并将运行期的实体对象长久化到数据库中。 JPA在大多数零碎中曾经失去广泛应用,越来越多的开源框架公布了本人的JPA实现,例如Hibernate、Open JPA、Spring Data等。 二、JPA反对 在Springboot中,为Flowable增加JPA反对,减少下列依赖: <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>${flowable.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>${spring.boot.version}</version> </dependency> 这会退出JPA用的Spring配置以及bean。默认应用Hibernate作为JPA提供者。 留神:JPA只是接口标准,没有具体实现,与Flowable应用的ORM框架MyBatis并无抵触。 在classpath的application.properties文件退出下列参数,主动创立数据库表。 spring.jpa.hibernate.ddl-auto=update 另外,举荐援用lombok包,能够让咱们省去实体类写Getter和Setter办法的工作。 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> </dependency>三、JPA版本的销假流程3.1 简略的销假流程 咱们以一个简略的销假流程为实例阐明JPA的具体应用。该销假实例只有一个用户工作,由用户填写表单数据,发动一个销假流程实例,后交由部门经理leader审批。 销假流程图示: 流程定义leave-process.bpmn20.xml <?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="Examples"> <process id="leaveProcess" name="The leave Process" > <startEvent id="theStart" flowable:formKey="leave"> <extensionElements> <flowable:executionListener event="start" expression="${execution.setVariable('leave', leaveEntityManager.newLeave(execution))}}"> </flowable:executionListener> </extensionElements> </startEvent> <sequenceFlow sourceRef="theStart" targetRef="theLeaderApprove" /> <userTask id="theLeaderApprove" name="部门经理审批" flowable:candidateGroups="leader"> <extensionElements> <flowable:taskListener event="complete" expression="${leave.setLeaderApproved(leaderApproved)}"> </flowable:taskListener> </extensionElements> </userTask> <sequenceFlow sourceRef="theLeaderApprove" targetRef="theEnd" /> <endEvent id="theEnd" > <extensionElements> <flowable:executionListener event="end" delegateExpression="${leaveEndListener}"> </flowable:executionListener> </extensionElements> </endEvent> </process></definitions> 销假表单leave.form ...

January 13, 2022 · 2 min · jiezi

关于npm:npm命令记录

npm查看全局装置过的包 npm list -g --depth 0查看版本 npm -v模块包操作 a、本地装置(install可缩写i): npm install 《Module Name》b、全局装置: npm i 《Module Name》 -g c、装置指定版本: npm install 《Module Name》@版本号(如npm i node-sass@6)d、装置到开发环境(简写-D): npm install 《Module Name》 --save-deve、装置到生成环境(简写-S): npm install 《Module Name》 --savef、卸载模块: npm uninstall 《Module Name》g、更新模块: npm update 《Module Name》h、查看模块信息: npm list 《Module Name》i、查问模块地址: npm view 《Module Name》 repository.urlj、搜寻模块: npm search 《Module Name》创立package.json: npm init获取npm默认装置门路 ...

January 12, 2022 · 1 min · jiezi

关于npm:npm-yarn-pnpm-研究

横向比照 依赖治理问题npmnode_modules 树形构造暗藏依赖反复装置npm > v3node_modules flatten mode反复援用yarnnode_modules flatten mode反复援用yarn2(berry)Plug’n’Play 每个包压缩成 zip, **.pnp.js 纪录包版本和磁盘映射地位vue 生态反对欠佳pnmpnode_modules 树形构造,操作系统级别 hard link 防止反复装置 yarn2 摸索yarn2 目测是最好的计划, 且背地有 fb 背书.应用 pnp 革新后我的项目也能失常运行 革新步骤如下: 查看以后 yarn 版本$ yarn --version1.22.11设置应用 yarn2$ yarn set version berry设置完了之后,查看 yarn 的版本号,>3 是失常状况:$ yarn --version3.0.0配置yarn-berry.cjs$ yarn config set npmRegistryServer https://registry.npm.taobao.org删除旧的 node_modules 文件夹和 yarn.lock 文件,并重建整个我的项目:$ rm -rf node_modules$ rm -f yarn.lock$ yarn启动我的项目 yarn serve/start/build ..., 解决 yarn 报的依赖谬误, 通常是因为之前的一些依赖没有在 package.json 中显示的申明, yarn install xxx就能解决shell 错误处理完之后如果浏览器能失常跑起来我的项目, 则革新结束. 若浏览器 console 报错:Error: Your application tried to access xxxxxx, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.如果 package.json 不蕴含, yarn install 之, 若装置后还报错, 批改.yarnrc.yml, 增加如下: ...

January 6, 2022 · 2 min · jiezi

关于npm:node自动重启工具nodemon

咱们在应用 nodejs 开发服务端时,批改完代码须要重新启动能力使代码失效,此时咱们能够应用nodemon来监听文件变动后主动重启服务,从而缩小手动重启这样无意义的操作。 应用步骤:第一步,装置npm i nodemon -g第二步,编写指令能够在package.js 文件中编写nodemon的启动命令,如下 { "name": "blog-1", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "server":"nodemon ./server.js" }, "author": "", "license": "ISC"}开启的./server.js 须要有启动服务器的代码,如下: var http = require("http");const serverHandle = require('../app.js');http.createServer(function (req, res) { serverHandle(req, res);}).listen(8080);console.log("localhost:8080");第三步,在终端中启动命令npm run server运行命令胜利如下图: 至此, 再次批改代码时,nodemon 会帮你主动重启!

December 30, 2021 · 1 min · jiezi

关于npm:Ubuntu20安装nodejs和npm并切换阿里源

参考阿里巴巴开源镜像站 Ubuntu20装置npm并切换阿里源 装置间接在终端执行 sudo apt-get install nodejs npm没有装置上就执行 sudo apt-get install npm 查看版本 node -v npm-v 而后装置个nrm好治理 sudo npm install -g nrm 切换国内阿里源 nrm ls  查看菜单,而后抉择源 nrm use taobao  实现

December 24, 2021 · 1 min · jiezi

关于npm:npm-login登录失败-code-E409Enter-onetime-password

npm ERR! code E409npm ERR! 409 Conflict - PUT https://registry.npmmirror.com/-/user/org.couchdb.user:xxx - [conflict] User xxx already existsnpm ERR! A complete log of this run can be found in:失败起因能够看到PUT的地址并不是registry.npmjs.org,而是 npmmirror。 解决办法终端输出 npm config set registry https://registry.npmjs.org 如图: 最初一步又进去了一个 Enter one-time password from your authenticator app,意思是须要应用authenticator校验。 增加2FA登录npmjs.com点击集体账号 在配置文件设置页面上的“双因素身份验证”下,单击启用 2FA。 在 2FA 设置页面上,抉择您要启用的模式。 最初扫描网页的二维码增加到你的 Authenticator中。 千万不要忘了滚动网页,底部还要输出6位code验证。 验证胜利后,在终端npm login 里就能够登录啦。 参考文章: https://docs.npmjs.com/config...。配置两步验证

December 23, 2021 · 1 min · jiezi

关于npm:在npm上发布一个自己的Vue组件包

首先放一张cli的目录结构图组件门路:src/components/组件文件夹/组件.vuesrc/components/组件文件夹/index.js代码 import comFullCalendarTimeline from "./fullCalendarTimeline.vue";comFullCalendarTimeline.install = (Vue) => Vue.component(comFullCalendarTimeline.name, comFullCalendarTimeline);export default comFullCalendarTimeline;目标:引入组件,install组件,抛出对外援用 多个组件状况:组件都引入在components数组中,在src目录下新建index.js //引入组件import comFullCalendarTimeline from "./components/fullcalendar/index";//定义组件列表const components = [comFullCalendarTimeline];//定义方法const install = (Vue) => { //判断是否装置 // if (install.installed) { // return; // } // install.installed = true; //遍历注册组件 components.map((component) => Vue.component(component.name, component));};//检测Vueif (typeof window !== "undefined" && window.Vue) { install(window.Vue);}export default { install, ...components,};不论是哪个index.js在export胜利后,都能够在全局或者组件中进行import注册而后测试一下是否胜利。接着说打包配置: package.js"name": "XXX", //npm名 "version": "1.9.0", //版本号 "private": false, //是否公有,上传公有包是须要付费的 "main": "./dist/fullcalendar.umd.js", //npm包的入口文件 "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lib": "vue-cli-service build --target lib --name fullcalendar ./src/index.js", //这个是最次要的,指定组件打包命令 "lint": "vue-cli-service lint" }vue.config.jsconst path = require("path");const webpack = require("webpack");module.exports = { // devServer:{ // proxy:'http://192.168.61.22:8086' // }, // mode: 'development', // entry: './index.js', // output: { // path: path.resolve(__dirname, './dist'), // publicPath: '/dist/', // filename: 'index.js', // library: 'excel-upload', // libraryTarget: 'umd', // umdNamedDefine:true // }, css: { extract: false }, publicPath:'./', //根本门路 outputDir:"dist", //打包门路 // assetsDir:"chunk", pages:{ index:{ entry:'./src/main.js', //主入口文件 } }, // configureWebpack:(config) => { // config.externals = { // vue: "Vue", // "element-ui": "ELEMENT", // "vue-router": "VueRouter", // vuex: "Vuex", // axios: "axios" // }; // }, chainWebpack: (config) => { // 修复热更新生效 // config.resolve.symlinks(true); if (process.env.NODE_ENV === 'production') { config.entryPoints.clear(); config.entry("main").add("./src/index.js"); config.output .filename("fullcalendar.js")//输入文件名 .libraryTarget("umd")//输入格局 .library("comfullcalendar");//输入库 } // config.devServer.host("localhost"); config.plugin("provide").use(webpack.ProvidePlugin, [ { $: "jquery", jquery: "jquery", jQuery: "jquery", "window.jQuery": "jquery", }, ]); },};须要留神: ...

December 20, 2021 · 2 min · jiezi

关于npm:npm-i-安装依赖卡慢失败等很久不成功错误等等

 在装置依赖的时候,有时候npm i会很慢,甚至不胜利,谬误等等,其中起因之一就是间接应用npm外国源、国内拜访国外源网站的网络必定慢,所以卡顿 上面测试比照一下国外镜像源和国内阿里的淘宝源哪个速度快些。 镜像下载、域名解析、工夫同步请点击 阿里巴巴开源镜像站:https://developer.aliyun.com/... 先用国外镜像源 npm config set registry https://registry.npmjs.org 查看是否更换 npm config get registry 装置依赖试下速度 npm i 如图 用了8秒左右 在换上 阿里巴巴开源镜像站-OPSX镜像站里的淘宝 NPM 镜像 npm config set registry https://registry.npmmirror.com查看是否更换 npm config get registry 装置依赖 npm i如图 用了5秒左右,比国外源镜像快了不少,顺带一提的是淘宝NPM 镜像站切换新域名了 新的Web 站点:https://npmmirror.com,Registry Endpoint:https://registry.npmmirror.com。随着新的域名曾经正式启用,老 http://npm.taobao.org 和 http://registry.npm.taobao.org 域名将于 2022 年 05 月 31 日零时起进行服务 所以之前用这个 npm config set registry https://registry.npm.taobao.org 切换的记得改下源哦 改成 npm config set registry https://registry.npmmirror.com

December 15, 2021 · 1 min · jiezi

关于npm:前端必备npm包推荐工具类调试工具node服务管理等

常用工具类申请类: axios 反对客户端和服务端应用cookies js-cookie 客户端应用工夫格式化 moment 重量级dateformaturl解决 query-string url参数解决,格式化加密 js-md5 数值解决 number-precision // number计算精准度问题解决numeral //number格式化通用工具类 lodash随机生成 uuid //生成随机uid调试工具 vconsole // 挪动端页面调试工具,显示以后页面的控制台、网络、零碎信息downloadjs // 冲破浏览器下载文件拦挡服务端应用log4js-node // node中输入日志mockjs //在服务端 mock数据用cookie 服务端应用全局包主动刷新 客户端:Live-server // 在当前目录开启http服务,并监听文件变动,主动刷新服务端: nodemon // 监听指定文件的变动,并执行命令localtunnel // 将内网地址转化成公网地址pm2 // node过程治理,主动重启,性能监控,负载平衡参考资料:【译】73个超棒且可进步生产力的 NPM 包

December 12, 2021 · 1 min · jiezi

关于npm:npm功能介绍及常用命令

npm 性能特地阐明:所有 -g 全局操作,在mac下都须要增加sudo 权限执行性能: 包管理工具(包含:下载,删除,更新,查看,链接,公布)装置: 随着node的装置会主动装置 (版本升级:sudo npm install npm -g)毛病: 默认源服务器在国外:须要设置成国内的代理源,或者应用proxy代理网络拜访 慢丢包npm 常用命令npm 常用命令npm版本查看: npm -vnpm帮忙文档: npn help // 简略帮忙文档npm -l // 具体帮忙文档npm config --help // 查看子命令,简略文档npm help config // 查看子命令,具体文档查看npm配置文件: npm config list // 查看npm config edit // 编辑npm 依赖相干命令装置依赖 本地装置 无需打包(devDependencies): npm i prettier, npm i prettier -D // 两种写法成果一样须要打包(dependencies对象中): npm install vue-router@0.7.13 -S // 装置指定版本的依赖装置package.json指定的依赖: npm i全局装置(要执行全局装置的命令): npm i typescript -g卸载依赖 npm uninstall reactnpm uninstall typescript -g革除npm缓存: ...

December 2, 2021 · 1 min · jiezi

关于npm:npm-自定义全局命令

npm 自定义全局命令装置node全局命令 一、创立package.json文件,创立命令为 hello{ "name": "demo", "version": "1.0.0", "dependencies": { }, "bin": { "hello": "./index.js" }}二、设置文件运行的后果index.js#!/usr/bin/env nodeconsole.log('hello world')三、在全局装置 (要 package.json根目录下装置),装置本地的包 到npm i . -g四、运行全局命令hello

November 30, 2021 · 1 min · jiezi

关于npm:NPM启用双因素身份验证2FA

Dear,大家好,我是“前端小鑫同学”,长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~最近几天忽然发现邮箱多了这么一份邮件,平常都间接疏忽掉了,明天须要王NPM仓库推一个版本的时候发现失败了,这才想起来看这份邮件的具体内容。大抵意思就是为了保障是你本人在操作咱们减少了一个动静验证码的性能。具体的启动流程写到了上面,未启用的来操作一下吧。 如何启用:通过账号密码登录[NPM]();点击个人头像找到Account选项,如下图: 找到Two Factor Authentication窗口,未开启按钮非Modify 2FA,点击你的按钮开始验证登录明码,通过后到批改平安防护的形式,如下图: 倡议抉择Authorization and Publishing选项,第一次开启须要扫码,所以减少如下操作: 下载App:Authenticator,启动后主页面如下图: 接着点击右上角加号,抉择其余类型进行扫码: 扫码后即可提交实现批改平安防护选项。注:如果长时间未修改明码,倡议批改一次。 如何应用:当咱们通过命令行执行publish操作时,在原有的账号,明码,邮箱输出项的根底上减少publish前后各一次的动静验证码的校验。很像原来打游戏用的将军令,乾坤锁,起初的QQ平安令牌。 #!/usr/bin/env bashnpm config set registry=https://registry.npmjs.orgecho '请进行登录相干操作:'npm login # 登陆echo "-------publishing-------"npm publish # 公布echo "公布完结,请留神控制台的理论输入状况"exit欢送关注我的公众号“前端小鑫同学”,原创技术文章第一工夫推送。

November 27, 2021 · 1 min · jiezi

关于npm:npm-包管理命令

装置npm install 装置所有包npm install <package-name> 装置指定包npm install <package-name>@<version> 装置指定版本包 --save 装置并增加条目到 package.json 文件的 dependencies。--save-dev 装置并增加条目到 package.json 文件的 devDependencies。更新npm outdated 查问可更新的包npm updatenpm update <package-name>查看 npm 包装置的版本npm listnpm list -g 实用于全局装置的软件包npm list --depth=0 获取顶层的软件包npm list <package-name> 指定名称来获取特定软件包的版本npm view <package-name> version 查看软件包在 npm 仓库上最新的可用版本版本控制所有的版本都有 3 个数字:x.y.z。第一个数字是主版本。第二个数字是次版本。第三个数字是补丁版本。 ^: 只会执行不更改最右边非零数字的更新。 如果写入的是 ^0.13.0,则当运行 npm update 时,能够更新到 0.13.1、0.13.2 等,但不能更新到 0.14.0 或更高版本。 如果写入的是^1.13.0,则当运行 npm update 时,能够更新到 1.13.1、1.14.0 等,但不能更新到 2.0.0 或更高版本。~: 如果写入的是 〜0.13.0,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 能够,但 0.14.0 不能够。>: 承受高于指定版本的任何版本。>=: 承受等于或高于指定版本的任何版本。<=: 承受等于或低于指定版本的任何版本。<: 承受低于指定版本的任何版本。=: 承受确切的版本。-: 承受肯定范畴的版本。例如:2.1.0 - 2.6.2。||: 组合汇合。例如 < 2.1 || > 2.6。无符号: 仅承受指定的特定版本(例如 1.2.1)。latest: 应用可用的最新版本。

November 24, 2021 · 1 min · jiezi

关于npm:npm发包流程

npm 官网地址: https://www.npmjs.com/package... 公布流程账号注册 官网注册:npmjs.com命令行注册:运行 npm adduse登陆(只需登陆一次): 运行 npm login // 输出账号/明码/邮箱发包(在我的项目根目录运行): npm publish 我的项目的包须要提前打包好,设置好package.json的内容每次发包version的版本号要比上个版本高查看公布的包: 集体核心查看:https://www.npmjs.com/~username官网搜寻:https://www.npmjs.com/search?...同步源阐明:公布在npmjs.com的源会主动同步到淘宝镜像比方:https://www.npmjs.com/package...https://npmmirror.com/package... 常见问题npm publish报404谬误 ?留神查看公布的账号是不是领有权限,npm 仓库有组的概念,可能这个账号没增加到组内 npm 源地址被批改过?npm 源可能被批改成verdaccio搭建的公有npm源,或者taobao源; 在公布npmjs.com源时,须要批改源地址。批改办法:倡议应用nrm 进行源治理 nvm的根本应用 nrm全局装置: npm i nvm -g查看源: nrm ls测速(打*的就是以后应用的源): nrm test切换源: nrm use npm

November 23, 2021 · 1 min · jiezi

关于npm:淘宝-NPM-镜像站换新域名

淘宝 NPM 镜像站(http://npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简略地做 NPM 的中国镜像站点,回馈国内前端社区,人不知;鬼不觉居然始终运行到当初。当年参考 Ruby Gems 淘宝镜像 的形式,跟阿里开源组织申请了 taobao.org 的二级域名,镜像站点名称也自然而然地取名为 淘宝 NPM 镜像站 (下称 CNPM)。 CNPM 分为 Registry 源站 和 CLI 命令行,社区用户个别通过 npm / pnpm / yarn 连贯前者来减速 npm 包的下载。 图片起源: 如上图,从 2014 年 CNPM 正式提供服务到明天,NPM 包从 10 万 → 178 万,CNPM 的包下载量从 1 亿 → 200 亿(未蕴含阿里等公有源)。 能够毫不虚心的说, CNPM 见证了国内前端蓬勃发展的这 8 年,将来咱们心愿持续陪伴中国的前端开发者继续走上来。 PS:尽管外围参与者大部分来自国内大厂,不过 CNPM 自身是一个中立的公益我的项目,日常微小的运维费用均来自社区捐献。 新的起航 随着前端的蓬勃发展, NPM 包数据量和内容复杂度仍在一直地减速增长,CNPM 当年的架构曾经很难满足当今的局势。 为了提供更稳固、更平安、更合乎网站合规经营要求的镜像服务,咱们往年启动了 CNPM 的优化工作: 启动新的域名。Registry 全面重构,晋升稳定性,升高同步失败率。CLI 优化,晋升装置速度,去掉软连贯等带来的兼容性问题。积淀自企业级大规模利用的应用教训手册。等等。。。 ...

November 23, 2021 · 1 min · jiezi

关于npm:npm-run-脚本背后的事情

npm run build:mylib npm run 执行的指标 build:mylib, 定义在 package.json 里: 理论执行的命令是:yarn --cwd feature-libs/my-lib && ng build my-lib --configuration production ng build:把 Angular 利用编译到给定输入门路下名为 dist/ 的输入目录中。此命令必须在工作空间目录下执行。 当用于构建库时,将调用其余构建器,并且仅利用 ts-config、configuration 和 watch 选项。 应用 CLI 创立我的项目时,默认状况下会创立 "production" 配置,并且能够通过指定 --configuration="production" 或 --prod 选项来应用该配置。 如果遇到谬误音讯: [error] Error: Unable to write a reference to UrlPipe in C:/Code/SPA/mySPA/spartacus/projects/core/src/routing/configurable-routes/url-translation/url.pipe.ts from C:/Code/SPA/mySPA/spartacus/projects/core/src/routing/configurable-routes/url-translation/url.module.tsat ReferenceEmitter.emit (C:\Code\SPA\mySPA\spartacus\node_modules\@angular\compiler-cli\src\ngtsc\imports\src\emitter.js:85:19)my-lib 为什么和 core 文件夹下的 url.pipe.ts 有关联? 创立一个空的 test-lib, 而后 ng build 之,看有无同样的谬误。 ...

November 16, 2021 · 1 min · jiezi

关于npm:记录一次本地调试-npm-模块npm-link

置信大家都遇到过本地调试本人写的npm包, npm link 你值得理解下 创立npm模块与本地我的项目的链接 npm-module ---- npm包我的项目npm-example --- 应用npm包我的项目 进入 npm包我的项目内 执行 npm link 执行实现后会在你的电脑本地node_modules包中(地位: C:\Users\dftd\AppData\Roaming\npm\node_modules\XXXXX)存在进入到 npm-example我的项目内 执行 npm link npm-module 此时引入的包是以快捷的形式引入,显著与其余失常包不同在npm-example中引入这个包的形式也稍微不同: 下面是本地引入 上面是惯例npm包引入 解除链接 解除我的项目与npm模块的链接进入npm-example 执行 npm unlink npm-module解除模块的全局链接进入npm-module 执行 npm unlink npm-module

November 11, 2021 · 1 min · jiezi

关于npm:恶意代码来袭周下载-900-万次的-npm-库-coa-遭劫持

据外媒 bleepingcomputer 报导,11 月 4 日,风行的 npm 库“coa” 被劫持,其中注入了恶意代码,并且短暂地影响了世界各地依赖于“coa”的 React 包。 “coa”是 Command-Option-Argument 的缩写,这个库每周在 npm 上的下载量约为 900 万次,并被 GitHub 上近 500 万个开源存储库应用。 'coa' 是 Node.js 我的项目的命令行选项解析器。该项目标最初一个稳固版本 2.0.2 于 2018 年 12 月公布。然而,在 npm 上忽然呈现了几个可疑版本:2.0.3、2.0.4、2.1.1、2.1.3 和 3.1.3,正是这些歹意版本毁坏了依赖于“coa”的 React 包: GitHub 上 coa 的歹意版本 React 开发人员 Roberto Wesley Overdijk 对此示意: “我不晓得这种状况为什么呈现,也不晓得到底产生了什么。但无论这个版本怎么做,它都毁坏了互联网。” 另一个应用 ElBidouilleur 句柄的 GitHub 用户发现 “coa”2.1.3 版本毁坏了他们的构建: npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! coa@2.1.3 preinstall: start /B node compile.js & node compile.jsnpm ERR! Exit status 1npm ERR!npm ERR! Failed at the coa@2.1.3 preinstall script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.npm ERR! A complete log of this run can be found in:npm ERR! /home/mboutin/.npm/_logs/2021-11-04T14_01_45_544Z-debug.log此外,几位开发者也退出了探讨,示意自“coa”的新版本公布以来,他们的构建也遇到了问题。 ...

November 5, 2021 · 1 min · jiezi

关于npm:npm-与-yarn-安装包不一致

问题run 一个 CRA 我的项目,应用 npm 与 yarn 安装包,发现 npm 装置的包有 @babel/plugin-proposal-optional-chaining, 而 yarn 装置的没有 @babel/plugin-proposal-optional-chaining。本地 npm 安装包后启动失常,而生产环境应用的 yarn, 造成构建失败。 起因yarn install 装置生成的 yarn.lock 文件 与 npm install 生成的 package-lock.json 文件工夫相差较远,造成了 yarn.lock 的包版本低于 package-lock.json 的包版本。因为以 x.x.x 模式定义的包版本在不同期间安装包版本不统一。 yarn 装置 @babel/preset-env 版本有: "7.5.5", "^7.4.5",理论装置的 version 是 "7.5.5"。 npm 装置 @babel/preset-env 版本有: "7.9.0", "^7.4.5",理论装置的 version 是 "7.9.0" 和 "7.11.5"。而在 “7.8.3”版本里首次依赖 @babel/plugin-proposal-optional-chaining。 解决:如果执行 yarn upgeade 就会更新 yark.lock 文件, 获取最新的包版本。 拓展package.jsonpackage.json 次要用来记录依赖包名称、版本、运行指令等信息字段。其中,dependencies 字段指定了我的项目运行所依赖的模块,devDependencies 指定我的项目开发所须要的模块。它们都指向一个对象,该对象的各个成员,别离由模块名和对应的版本组成,示意依赖的模块及其版本范畴。 ...

October 26, 2021 · 2 min · jiezi

关于npm:npm-publish-发布一个-Angular-库的时候报错以及解决方法

我明天照着 npm 文件,打算把本人开发的 npm 库公布到公网上: npm login 之后,应用命名行 npm config set registry=http://registry.npmjs.org, 遇到如下谬误: npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plaintext http to connect. Please visit the GitHub blog for more information: https://github.blog/2021-08-2...npm ERR! code E426npm ERR! 426 Upgrade Required - PUT http://registry.npmjs.org/my-libnpm ERR! A complete log of this run can be found in:npm ERR! C:\Users\I042416\AppData\Roaming\npm-cache\_logs\2021-10-17T02_40_15_408Z-debug.log ...

October 18, 2021 · 1 min · jiezi

关于npm:自定义NPM命令行

入口文件自定义依赖模块: 模块是在 package.json 里通过 main 字段定义这个包对外裸露的入口; 模块起源于node,语法默认反对commonjs标准模块若应用ES Module语法书写,通过 module 字段定义入口(须要打包工具配合应用)自定义命令行: 如果是提供命令行工具,则须要通过 pkg#bin 字段来定义裸露的命令名称与理论执行的文件这篇文章讲述自定义命令行的申明,NPM依赖包请查看链接:自定义NPM包。 开发环境[ ] 主动日志[ ] 版本更新~应用的是husky6+,配置与旧版本不同,追随文章操作时,请留神版本~ husky 装置 npm install husky --save-dev npx husky install配置run-script:装置依赖后主动启动Git hooks "prepare": "husky install"追加测试钩子 # Unix零碎可用 npx husky add .husky/pre-commit "npm run test" # Windows通过以下命令创立文件(引号在windows命令行中不是标准的语法) npx husky add .husky/pre-commit # Windows环境下找到新建的文件,编辑文件,指定命令 #!/bin/sh . "$(dirname "$0")/_/husky.sh" npm run testcommitlint commitlint提交信息校验工具 须要和校验标准配合应用,官网默认标准@commitlint/config-conventional —— 校验标准可自定义。 npm i -D commitlint @commitlint/config-conventionalcommitlint绑定@commitlint/config-conventional # Unixecho "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js# Windowsecho module.exports = {extends: ['@commitlint/config-conventional']} > commitlint.config.js配置Git hook:在提交commit msg进行参数校验 —— 写在run-script中有效 ...

October 15, 2021 · 3 min · jiezi

关于npm:npm-install-报错-npm-ERR-code-EINTEGRITY

具体报错信息如下npm ERR! code EINTEGRITYnpm ERR! Verification failed while extracting @my-package@^1.2.0:npm ERR! Verification failed while extracting @my-package@^1.2.0:npm ERR! sha512-lQ...HA== integrity checksum failed when using sha512: wanted sha512-lQ...HA== but got sha512-nH...ow==. (4835509 bytes)解决办法1、删除本地的 package-lock.json 文件2、更新本人的 npm 版本 (npm i -g npm)3、清空 npm 缓存 (npm cache clean --force | npm cache verif)4、重新安装 (npm install)

October 14, 2021 · 1 min · jiezi

关于npm:npm-报错系列

1,unable to resolve dependency tree翻译:无奈解析依赖树。起因:可能是依赖抵触。解决:npm install --save XXX --legacy-peer-deps本次问题是在装置 vue-i18n 的时候呈现的。 修复上游依赖抵触,或应用--force 或--legacy-peer-deps 重试此命令以承受不正确(并且可能已损坏)的依赖解析--legacy-peer-deps:装置时疏忽所有peerDependencies,采纳npm 4到6版本的格调.--force:一个模块不论是否装置过,npm 都要强制重新安装,能够应用 -f 或 --force 参数. 还看到一个解说 --legacy-peer-deps 的网站:npm install xxxx --legacy-peer-deps到底做了些什么?

October 11, 2021 · 1 min · jiezi

关于npm:运行nrm报错Cannot-find-module-npm

问题形容在命令提示符中应用npm i nrm -g装置nrm后,运行nrm报错,提醒 Cannot find module 'npm'解决办法通过排查发现是nrm目录下的npm版本问题,通过批改package.json文件并重新安装nrm目录下的npm解决,具体操作如下 找到nrm的装置目录,比方我的装置目录是D:\Program Files (x86)\Nodist\bin\node_modules\nrm批改目录下的package.json文件,将依赖中的"npm": "latest"改为"npm": "^6.0.0"在目录下运行npm i重新安装npm

October 9, 2021 · 1 min · jiezi

关于npm:如何优雅地在本地测试-npm-包

如何优雅地在本地测试 npm 包须要公布my-npm,想在my-project我的项目内测试my-npm my-npm 是 npm 的名字,不肯定和我的项目名字雷同,为了不便,开发 my-npm 的我的项目名字也叫 my-npm。 三种办法yalc 模仿仓库全局装置 npm i yalc -g my-npm build 后, 执行 yalc public, my-project yalc add my-npm 举荐这种形式,更加简略通明。 npm linkmy-npm build 后,执行 npm link,而后 my-project npm link my-npm 测试结束,my-project npm unlink my-npm 开释软连贯。 npm i . -gmy-npm build 后, 执行npm i . -g,而后 my-project npm link my-npm 测试结束,my-project npm unlink my-npm 开释软连贯。 这些命名做了啥link 和 npm i . 都在 npm 的全局 node_modules 内创立了链接到 npm 的软连贯。 ...

September 10, 2021 · 1 min · jiezi

关于npm:windows安装npm教程

参考文章windows装置npm教程 变量类型变量名变量值用户变量PathC:\Users\Administrator\AppData\Local\Programs\Python\Python35\Scripts\;C:\Users\Administrator\AppData\Local\Programs\Python\Python35\; %NVM_HOME%;%NVM_SYMLINK%;C:\Users\Administrator\AppData\Roaming\npm零碎变量Path%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\Git\cmd;D:\nodejs\;D:\nodejs\node_global零碎变量NODE_PATHD:\nodejs\node_global\node_modulescnpm配置文件 C:\Users\Administrator.cnpmrc strict-ssl=falseregistry=http://registry.npmjs.org/ npm配置文件 C:\Users\Administrator.npmrc registry=http://registry.npm.taobao.orgproxy=http://example.com:8080/prefix=D:\nodejs\node_globalcache=D:\nodejs\node_cache

September 7, 2021 · 1 min · jiezi

关于npm:packagejson-version

介绍前端开发的过程中须要引入一些第三方包,帮忙咱们疾速高效地开发。当第三方包有批改,咱们更新包的版本时,咱们须要理解包批改的范畴,以便对此做出相干反馈。 为此,由 Gravatars 创办者兼 GitHub 独特创办者 Tom Preston-Werner 建设了语义化版本控制标准(Semantic Version),体现在 npm 包的版本号中。 单个版本号的形成构造major.minor.patch(-prerelease)? major.minor.patch 三者都为自然数;且都以数值来递增。正则表白:[1-9][0-9]*prerelease 在订正号之后,先加上一个连接号(-)再加上一连串以句号(.)宰割的标识符([0-9A-Za-z-])来润饰。数字型的标识符,为自然数正则表白:-[0-9A-Za-z-](\.[0-9A-Za-z-])*major(主版本号),minor(次版本号),patch(订正号),prerelease(后行版本号) major.minor.patch 为规范版本号。 语义阐明major - 当包源代码批改,批改无奈做到向下兼容时,主版本号递增;该批改,能够蕴含次版本号和订正号的状况。minor - 当包源代码批改,新增一些向下兼容的性能,次版本号递增;该批改,能够蕴含订正号的状况。patch - 当包源代码批改,做了向下兼容的问题批改,订正号递增。prerelease - 被加上后行版本号示意该版本并非正式版,存在不稳固的状况。大小比拟规范版本比拟:major.minor.patch 从左往右,依照数值的大小比拟,例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。后行版本比拟:通过后行版本号中,从左往右的每个被句号离开的标识符来比拟。 只有 数字标识符 比拟时,则按数值的大小比拟。只有 非数字标识符 比拟时,则依照 每个标识符 中 每个字符 在 ASCII 中的程序来比拟。数字标识符 和 非数字标识符 比拟时,则 非数字标识符 优先级高。若每个标识符都雷同的状况,则 标识符层级多 的后行版本号 优先级高。混合比拟 带有 后行版本号 的版本优先级 低于 相关联的 规范版本 ,例如:1.2.3-beta-1 < 1.2.3版本的程序 版本号的范畴背景:为了解决在我的项目中同一个包不同版本的兼容需要,以及安装包时能够降级到预期的最新版本。version 字段能够表白一个版本的范畴。 构造版本范畴(version range): (operator version)(joiner(operator version))* ...

September 3, 2021 · 2 min · jiezi

关于npm:packagejson的认识

前言感觉这块也是一个知识点,尽管我当初还不能零碎的用xmind总结每个知识点的串联关系,然而只能看一个记一个了 package.json是什么我集体了解,package.json是形容包,治理包的一个信息json文件,给npm用的,比方你能够写一个包,发到npm,那这个json就是记录这个包的信息,或者对用vue脚手架开发的我的项目而言,它就是治理包的文件,npm install会读这个文件的denp配置包信息而后下载 package.json 如何产生的用npm init初始化,一路回车,这里说一句,npm init,这句话,咱们是用shell窗口输出的,就是在这种要晓得,这个窗口外面的指令,其实执行的是shell指令,也就是说,npm init,打上来后,它外部跑了一个sehll的指令,这个指令调用零碎创立文本的指令,而后巴拉巴拉,最初输入到本文件夹。 dependenices和devDependenices这两个字段,从始至终,我只晓得,dependenices的依赖包是本地,线上开发都须要,比方UI框架,而devDependenices的依赖包,只是本地开发才须要,比方eslint; (1)什么叫本地须要,线上开发须要?我的了解啊,就是npm run dev的时候,这两个字段的依赖包全副都会加载,而npm run build的时候,devDependenices的依赖包不会打包进去,从而缩小了整个包的体积,拜访更快一点 (2)锁版本我明天才晓得,原来装置依赖的时候,把包后面的倒三角删掉,版本就锁定了 那么这样做有什么用呢??你的共事,拉代码,跑npm install的时候,如果依赖包后面带倒三角,它其实是默认拉最新的包,如果它跑完了,代码一推,这个package.json被更新了,重点来了!依赖A版本是1.0,它匹配依赖B版本是1.0,前面依赖B更新了2.0,你装置依赖的 时候,A还是1,然而B被你更新变成2了,后果就报错了 (3)指令 // 装置最新到dependenices(默认)npm i xxxxx// 装置最新到dependenicesnpm i xxxxx -S// 装置指定版本到dependenicesnpm i xxxxx@2.0.0// 装置最新到devDependenicesnpm i xxxxx -Dbin在介绍这个字段之前,先来举一个例子,大家在新的电脑装置环境的时候,装那个node的时候,如果那个node装置后,没有配置PATH(环境变量地址),在shell窗口输出node -v的时候,会报错说找不到,配了path后,其实就是把装置目录门路填进去,就能够 好了说完下面那个之后,回到这个bin,这个bin字段的作用其实也相似。在咱们的依赖包里,比方gulp,有这个bin字段配置 一旦有这个配置,那么其实咱们装npm i gulp的时候,它会读取到这个字段,并且,会写一份文件到node_modules下的.bin文件夹(这个文件夹的由来就是这样) 而后呢,当咱们npm run dev的时候,都晓得,这句代码,其实跑的是scripts那里的 gulp dev-local,问题来了,gulp我没有全局装置,PATH我没有配,为什么这样跑不会报错!!! 答案就是,上面我引入大佬文章的一段解释 (1) 咱们每次在运行 scripts 中的一个属性时候(npm run),理论零碎都会主动新建一个shell(个别是Bash),在这个shell外面执行指定的脚本命令。因而 但凡能在 shell 中容许的脚本,都能够写在npm scripts中。 (2) 特地的点,npm run 新建的 shell,会在当前目录的 node_modules/.bin 子目录退出到 PATH 变量,执行完结后,再将 PATH 变量复原原样。也就是说,以后我的项目目录 node——modules/.bin 子目录中所有的脚本,都能够间接用脚本名称调用,不须要减少门路.(简略总结:通过 npm 启动的脚本,会默认把 node_modules/.bin 加到 PATH 环境变量中。) ...

August 25, 2021 · 1 min · jiezi

关于npm:npm-相关知识杂谈

npm 相干常识记录如何装置npm?装置node就会主动装置npm(倡议应用nvm来装置)倡议用yarn来治理npm依赖(速度更快、依赖扁平构造),还有最新的pnpm值得钻研用nrm治理registry如果公司有npm私服并且有对应的scope,能够设置scope对来自同一命名空间下的包批准指定装置源防止来回切换源的繁琐,并且在公布该scope下的npm包时也不须要切源 # 设置形式npm config set "@hll:registry" http://registry.npm.xxx.ioyarn config set "@hll:registry" http://registry.npm.xxx.ionpm发包 1. npm logout2. npm login # 顺次输出账号、明码、邮箱3. npm publish (会提醒去npm官网验证邮箱地址)npm 公布时可能遇到的问题 1. 源出错 2. 包名反复 3. 每次公布前要批改package.json的版本号,必须要大于上一次的版本号npm link 本地调试:为调试带来的频繁发包,能够应用 npm link 将npm包代理到本地调试,操作步骤:进入源码目录执行 npm link进入应用目录即示例代码执行 npm link [包名],折后就能够间接在示例代码处应用 import xxx from 'xxx' 进行调试了

August 15, 2021 · 1 min · jiezi

关于npm:如何为你的命令行设置代理

如何在命令行里应用shadowsocks或者v2rayn的代理呢? httplinux:export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;window:set http_proxy=http://127.0.0.1:1087;set https_proxy=http://127.0.0.1:1087;socks(socks5)linux:export http_proxy=socks5://127.0.0.1:10808export https_proxy=socks5://127.0.0.1:10808window:# 应用sock5代理set http_proxy=socks5://127.0.0.1:10808set https_proxy=socks5://127.0.0.1:10808勾销代理linux:unset http_proxyunset https_proxywindow:set http_proxy=set https_proxy=git独自设置git config --global http.proxy 'socks5://127.0.0.1:10808' git config --global https.proxy 'socks5://127.0.0.1:10808'# 勾销git config --global --unset http.proxygit config --global --unset https.proxy附:1.shadowsocks命令复制2.v2rayn端口查看3.通过主机IP代理

August 13, 2021 · 1 min · jiezi

关于npm:搭建私有npm服务器

为什么须要npm公有仓库npm公有仓库是托管在公司外部服务器,为什么须要它 爱护公司代码外部的UI组件或者工具,不便内部人员应用内网拜访更快外部保护,能够管制公布和删除权限解决方案调研Sinopia不能下载带有@符号的包,且仓库长年无人保护,已被弃用cnpm 始终在保护,但release始终没更新 verdaccio fork自sinopia踊跃保护,star最多 Nexus java私服用的多 github starslastest realeaselastest commit备注Sinopia5.4k2015-6-72015-10-3不再保护cnpm3.4k2014-10-92021-7-6-verdaccio11.9k2021-7-152021-7-21-以上数据统计于 2021-7-23 能够看到verdaccio在3个维度上一骑绝尘,决定抉择verdaccio,它是nodejs编写的,与前端最贴近。 搭建过程申请服务器,装置环境申请下来后,应用xshell6进行ssh登录。须要测试和装置环境,包含外网,装置node,这里抉择风行版本v14.17.3(LTS) nodejs download 以后长期反对版: 14.17.3 (蕴含 npm 6.14.13) tips: 尝试过应用nvm,能够装置胜利,但因为网络问题装置node失败,遂放弃。 应用verdaccioverdaccio装置npm install -g verdaccio批改配置文件cd ~/.config/verdacciovim config.yaml# 或者间接下一行vim ~/.config/verdaccio/config.yaml 1 # 2 # This is the default config file. It allows all users to do anything, 3 # so don't use it on production systems. 4 # 5 # Look here for more config file examples: 6 # https://github.com/verdaccio/verdaccio/tree/master/conf 7 # 8 9 # path to a directory with all packages 10 storage: ./storage # npm包寄存的门路 11 # path to a directory with plugins to include 12 plugins: ./plugins 13 14 web: 15 title: Verdaccio 16 # comment out to disable gravatar support 17 # gravatar: false 18 # by default packages are ordercer ascendant (asc|desc) 19 # sort_packages: asc 20 # convert your UI to the dark side 21 # darkMode: true 22 # logo: http://somedomain/somelogo.png 23 # favicon: http://somedomain/favicon.ico | /path/favicon.ico 24 25 # translate your registry, api i18n not available yet 26 # i18n: 27 # list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations 28 # web: en-US 29 30 auth: 31 htpasswd: 32 file: ./htpasswd 33 # Maximum amount of users allowed to register, defaults to "+inf". 34 # You can set this to -1 to disable registration. 35 # max_users: 1000 36 37 # a list of other known repositories we can talk to 38 uplinks: 39 npmjs: 40 url: http://registry.npm.taobao.org/ # 默认为npm的官网,因为国情,改用taobao的npm镜像地址 41 42 packages: 43 '@*/*': 44 # scoped packages 45 access: $all 46 publish: $authenticated 47 unpublish: $authenticated 48 proxy: npmjs 49 50 '**': 51 # allow all users (including non-authenticated users) to read and 52 # publish all packages 53 # 54 # you can specify usernames/groupnames (depending on your auth plugin) 55 # and three keywords: "$all", "$anonymous", "$authenticated" 56 access: $all 57 58 # allow all known users to publish/publish packages 59 # (anyone can register by default, remember?) 60 publish: $authenticated 61 unpublish: $authenticated 62 63 # if package is not available locally, proxy requests to 'npmjs' registry 64 proxy: npmjs 65 66 # You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections. 67 # A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout. 68 # WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough. 69 server: 70 keepAliveTimeout: 60 71 72 middlewares: 73 audit: 74 enabled: true 75 76 # log settings 77 logs: { type: stdout, format: pretty, level: http } 78 79 # listen 设置监听后,开启外网拜访 80 listen: 0.0.0.0:4873 81 82 #experiments: 83 # # support for npm token command 84 # token: false 85 # # disable writing body size to logs, read more on ticket 1912 86 # bytesin_off: false 87 # # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string 88 # tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}' 89 # # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file 90 # tarball_url_redirect(packageName, filename) { 91 # const signedUrl = // generate a signed url 92 # return signedUrl; 93 # } 94 95 # This affect the web and api (not developed yet) 96 #i18n: 97 #web: en-US可能批改的点是:storage、uplinks.npmjs.url、listen ...

August 6, 2021 · 3 min · jiezi

关于npm:Linux服务器上-从0-到1-使用-verdaccio搭建npm私有化仓库

从后端那里要来了一个服务器,下面啥都没有,想要搭建一个npm私有化仓库 放一些公司我的项目的公共组件,还有我的项目的SDK,搞成库 引入到我的项目中去应用。这就开搞。 首先登录服务器, 搭建环境第一步,装置nodejs yum install -y epel-releaseyum install -y nodejsnode -v 查看一下 好家伙 版本这么低! 才6.17.1降级一下版本, 装置一下nodejs包管理工具 npm install -g n罕用的一些命令: n stable // 把以后零碎的 Node 更新成最新的 “稳固版本”n lts // 长期反对版n latest // 最新版n 10.14.2 // 指定装置版本n // 查看已装置的版本n rm 10.14.2 // 删除指定版本命令行输出n回车 抉择一个版本再次回车node -v再次查看,版本显示还是v6.17.1 切换了版本怎么没变动! 百度, 发现以后版本不是最新的版本,而后曾经装置有了最新的版本,造成不失效的起因:node默认的装置目录与应用管理工具n装置的目录不统一, 解决办法:查看以后node装置门路 which node而 n 默认装置门路是 /usr/local,以后node的装置门路与n的门路不统一,须要通过通过N_PREFIX变量来批改 n 的默认node装置门路。 编辑环境配置文件:vim ~/.bash_profile 批改node装置地位:在开端减少export PATH=/usr/local/bin:$PATH shift+:wq 保留退出 让新配置失效:source ~/.bash_profile 重新安装稳固版本:n stable ...

July 19, 2021 · 1 min · jiezi

关于npm:npmcnpmyarn之间的区别

npm在应用 npm 安装包的时候,给人的第一感觉就是慢,而且还会在命令行打印出一堆的货色,而且常常会呈现 “在我的电脑上能够......” 这个问题,着实是有点好受。但也不得不说 npm 是 node 如此胜利的次要起因之一。 npm的毛病如下:1、因为版本号的影响,所以会造成版本不对立的状况 npm是围绕着语义版本控制的思维而设计的 给定一个版本号:主版本号.次版本号.补丁版本号 主版本号: 当API产生扭转,并与之前的版本不兼容的时候次版本号: 当减少了性能,然而向后兼容的时候补丁版本号: 当做了向后兼容的缺点修复的时候package.json某依赖的版本号如下:"5.0.3", // 装置指定的5.0.3版本"~5.0.3", // 装置5.0.X中最新的版本"^5.0.3" // 装置5.X.X中最新的版本 因而不同的开发人员应用雷同的package.json文件,在他们本人的机器上可能会装置同一个库的不同版本,这样就会存在潜在的难以调试的谬误和“在我的电脑上…”的情景。 2、因为npm库存在嵌套依赖的关系,会减少无奈匹配相应版本的概率每一个包,会有嵌套其余的依赖包,如果两个包中存在同一个依赖包,但两者须要的依赖包的版本号不同,就会呈现包的版本匹配问题。 3、npm 的输入信息比拟简短装置的时候,包会在同一时间下载和装置,中途某个时候,一个包出了谬误,然而 npm 会持续下载和安装包。因为 npm 会把所有的日志输入到终端,无关谬误包的错误信息就会在一大堆 npm 打印的正告中失落掉,所以你很难找到真正出错的包和起因。 4、下载速度慢npm 2会装置每一个包所依赖的所有依赖项,有一个我的项目,A依赖B,B依赖C,依赖树如下: node_modules- package-A-- node_modules--- package-B----- node_modules------ package-C-------- some-really-really-really-long-file-name-in-package-c.js这个构造可能会很长。这对于基于Unix的操作系统来说只不过是一个小懊恼,但对于Windows来说却是个破坏性的货色,因为有很多程序无奈解决超过260个字符的文件路径名。 npm 3采纳了扁平依赖关系树来解决这个问题,所以咱们的3个我的项目构造当初看起来如下所示: node_modules- package-A- package-B- package-C-- some-file-name-in-package-c.js这样,一个原来很长的文件路径名就从./node_modules/package-A/node_modules/package-B/node-modules/some-file-name-in-package-c.js变成了/node_modules/some-file-name-in-package-c.js。 这种办法的毛病是,npm必须首先遍历所有的我的项目依赖关系,而后再决定如何生成扁平的node_modules目录构造。npm必须为所有应用到的模块构建一个残缺的依赖关系树,这是一个耗时的操作,是npm装置速度慢的一个很重要的起因。 同时,因为npm是从国外服务器下载,因为网络起因,速度会很慢。 cnpm绝对于 npm 而言, cnpm 的下载速度要快很多。cnpm 更快,是因为淘宝将国外服务器的内容,先申请到了本人国内的服务器上,这样咱们应用cnpm的时候下载的依赖就是从国内服务器上下载过去的,速度绝对快很多。 官网上说:“这是一个残缺 npmjs.org镜像,你能够用此代替官网版本,同步频率目前为 10分钟 一次以保障尽量与官网服务同步。”yarnyarn的长处:1、yarn离线模式如果你以前装置过某个包,再次装置时能够在没有任何互联网连贯的状况下进行。 2、装置版本对立yarn 有锁定文件(lock file) 记录了确切被装置模块的版本号,每次新增文件时,yarn会创立(或更新)yarn.lock这个文件,保障每次装置依赖时都是一样的模块版本。 3、扁平模式将依赖包的不同版本归结为单个版本,以防止创立多个正本。 npm和yarn的命令比照npmyarnnpm installyarn或者yarn installnpm install react --saveyarn add reactnpm uninstall react --saveyarn remove reactnpm install react --save-devyarn add react --devnpm update --saveyarn update参考资料:npm和yarn的区别和比照npm,cnpm和yarn的区别yarn中文文档

July 18, 2021 · 1 min · jiezi

关于npm:npm-安装nodesass失败的原因解决方案

npm 装置node-sass失败的起因解决方案起因 : 在linux机器上执行命令 npm install 装置依赖始终有问题,报错信息如下 npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! node-sass@4.14.1 postinstall: `node scripts/build.js`npm ERR! Exit status 1npm ERR!npm ERR! Failed at the node-sass@4.14.1 postinstall script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.找不到sass,查看node-sass文件,外面没有文件。 于是百度了一堆解决方案: npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass 而后执行npm install node-sass 然而并没有卵用,可能我的问题不是很实用这个删除我的项目中的package-lock.json和node_modules文件夹,而后执行 npm install 并无卵用和1一样 不过多了几个镜像源 并无卵用 https://www.cnblogs.com/zzgyq...思否のnode-sass装置失败的解决形式 这个没试过大家能够参考间接用cnpm装置?? 纳尼?? 自己有效 大家能够尝试最初间接开大了间接降级node 和npm 的版本 而后装置即可 我之前的版本是 ...

July 7, 2021 · 1 min · jiezi

关于npm:NPM总结

npm执行脚本程序& 并行执行,不存在前后关系,即同时平行的执行。但cmd.exe(npm run-script在win上默认应用它)并不反对&。&& 继发执行, 前一个工作执行胜利,才继续执行下一个。官网的npm run-script命令不能同时运行多个脚本,所以如果咱们要运行多个脚本,能够参考上面写法(尽管写法显得有些多余): npm run clean && npm run build:css && npm run build:js && npm run build:html举荐应用npm-run-all这个包。解决上述提到的跨平台和简化写法问题。 # 程序执行npm-run-all lint build# 并行执行 npm-run-all --parallel lint build参考文章npm scripts 使用指南

July 6, 2021 · 1 min · jiezi

关于npm:arraysize什么意思

在发送给客户端。与之相干的另一个参数就是SDU(session data unit),预抓取在PGA所占的内存大小和SDU大小相干,默认是8K. SQL> show arraysize arraysize 15 SQL> create table jason as select * from dba_objects; Table created. SQL> SQL> SQL> select count(1) from dba_objects; COUNT(1) ———- 50042 SQL> SQL> SQL> set autot trace SQL> SQL> SQL> SQL> select * from jason; 50042 rows selected. Execution Plan ———————————————————- Plan hash value: 1258222954 ————————————————————————— | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ————————————————————————— | 0 | SELECT STATEMENT | | 44426 | 7679K| 155 (2)| 00:00:02 | | 1 | TABLE ACCESS FULL| JASON | 44426 | 7679K| 155 (2)| 00:00:02 | ————————————————————————— Note —– – dynamic sampling used for this statement Statistics ———————————————————- 0 recursive calls 0 db block gets 3992 consistent gets 0 physical reads 0 redo size 2544199 bytes sent via SQLwww.pizei.com*Net to client 37188 bytes received via SQL*Net from client 3338 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 50042 rows processed SQL> set arraysize 400 SQL> SQL> SQL> SQL> / SQL> / 50042 rows selected. Execution Plan ———————————————————- Plan hash value: 1258222954 ————————————————————————— | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ————————————————————————— | 0 | SELECT STATEMENT | | 44426 | 7679K| 155 (2)| 00:00:02 | | 1 | TABLE ACCESS FULL| JASON | 44426 | 7679K| 155 (2)| 00:00:02 | ————————————————————————— Note —– – dynamic sampling used for this statement Statistics ———————————————————- 0 recursive calls 0 db block gets 817 consistent gets 0 physical reads 0 redo size 1956586 bytes sent via SQL*Net to client 1867 bytes received via SQL*Net from client 127 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 50042 rows processed能够看到当咱们把arraysize从默认的15调整到400后consistent gets逻辑读从原来的3992降落到817,bytes received via SQL*Net from client相干的页游的值也有显著的降落。 ...

June 23, 2021 · 2 min · jiezi

关于npm:自定义NPM包

环境初始化mkdir npm-logcd npm-lognpm init -y入口文件自定义依赖模块和命令行的入口文件不同: 模块是在 package.json 里通过 main 字段定义这个包对外裸露的入口; 模块起源于node,语法默认反对commonjs标准模块若应用ES Module语法书写,通过 module 字段定义入口如果是提供命令行工具,则须要通过 bin 字段来定义裸露的命令名称与理论执行的文件模块创立lib/index.js const Noop = () => {}class Logmi { errorHandler = Noop successHandler = Noop static create (options) { return new Logmi(options) } constructor (options = {}) { console.log('---------create------', options) } log (msg, level) { console.log('log: start', msg, level) }}module.exports = Logmi更新package.json "main": "lib/index.js"命令行最次要的是在 package.json 里通过 main 字段定义这个包对外裸露的入口;如果是提供命令行工具,则须要通过 bin 字段来定义裸露的命令名称与理论执行的文件开发环境[ ] 主动日志[ ] 版本更新husky ...

June 5, 2021 · 3 min · jiezi

关于npm:npm-link-基本使用

参考文档npm link官网文档 性能npm link是一种把包链接到包文件夹的形式,即:能够在不公布npm模块的状况下,调试该模块,并且批改模块后会实时失效,不须要通过npm install进行装置办法模块和我的项目在同一目录下$ npm link ../module模块和我的项目不在同一目录下$ # 先去到模块目录,把它 link 到全局$ cd ../npm-link-test$ npm link$$ # 再去我的项目目录通过包名来 link$ cd ../my-project-link$ npm link test-npm-link(模块包名,即:package.json中name)$$ # 解除link$ 解除我的项目与模块的link,在我的项目目录下,npm unlink 模块名$ 解除模块全局的link,在模块目录下,npm unlink 模块名npm link 命令能够将一个任意地位的npm包链接到全局执行环境,从而在任意地位应用命令行都能够间接运行该npm包。 这个命令次要做了两件事: 为npm包目录创立软链接,将其链到 {prefix}/lib/node_modules/<package>,是一个快捷方式为可执行文件(bin)创立软链接,将其链到 {prefix}/bin/{name}举个 模块目录:npm-link-test$ npm init //package.json{ "name": "test-npm-link", "version": "1.0.0", "description": "npm link test", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": {}}$ touch index.js ...

May 27, 2021 · 1 min · jiezi

关于npm:安装nrm报错问题解决

在装置nrm时呈现很多warning,应用nrm -V或者nrm ls都有报错的状况。 internal/validators.js:124 throw new ERR_INVALID_ARG_TYPE(name, 'string', value); ^[TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined at validateString (internal/validators.js:124:11) at Object.join (path.js:375:7) at Object.<anonymous> (D:\Program Files\nodejs\node_global\node_modules\nrm\cli.js:17:20) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) at internal/main/run_main_module.js:17:47] { code: 'ERR_INVALID_ARG_TYPE'} 在上图标红处能够依据目录找到cli.js文件 而后将第17行的 const NRMRC = path.join(process.env.HOME, '.nrmrc'); 替换成 const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');

April 23, 2021 · 1 min · jiezi

关于npm:如何解决nodemodules包压缩出错或者拷贝不全的问题

cnpm应用了相干的缓存,能够防止下载反复的包,而产生援用的问题,导致node包无奈复用 这个就是cnpm下载呈现的故障,能够应用npm下载,或者cnpm install --by=npm问题解决

April 13, 2021 · 1 min · jiezi

关于npm:使用npm命令行更新版本号

背景版本号是用于逐渐演进软件的过程中和其使用者之间订立的一套公共规定,Semantic Versioning 语义化版本号则是版本号具体如何约定的一套公共约定。咱们在日常的软件生产过程中,不单只产出软件自身,还会产出一些可供复用的代码包。这些代码包糅合集成在一起从而产出一个残缺的软件及零碎,期间代码包依旧会持续研发增加新个性或是修复旧有问题。在这个趋势之下,基于语义化版本号规定就能更好的细化软件生产及迭代,使软件资产能有序地更新及公布。 版本号根本是由三位数字组成: 1 . 0 . 0[MAJOR].[MINOR].[PATCH]三位数字别离代表不同意思: MAJOR 进行不兼容的API更改时的版本MINOR 以向后兼容的形式增加性能时的版本PATCH 向后兼容的谬误修复程序的版本具体内容倡议去具体查看 Semantic Versioning 语义化版本号 公约。 问题团队将局部人手操作交付给CI/CD工具,比方此文探讨的软件公布的版本的问题。目前软件公布过程是基于人手间接批改package.json文件中的version字段来实现版本的更新。在前端开始模块化治理各种公共模块后,将会产出大量的代码包须要保护。把一些人为的操作交付给机器,让机器帮忙前端共事解决局部反复的工作,也能无效缩小这些环节中的人为谬误。 解决办法前端目前的代码包管理工具npm,自身有提供命令工具帮忙编码人员解决版本升级的工作。上面是代码: $ npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]'npm [-v | --version]' to print npm version'npm view <pkg> version' to view a package's published version'npm ls' to inspect current package/dependency versions应用的规定也是遵循语义化版本号公约而设计,npm官网实际的细节可看 sermver.inc。 上面是对于版本选项的形容(假如默认版本为0.2.0): 选项形容例子阐明major重大更新版本npm version major0.2.0 =》1.0.0minor次要更新版本npm version minor0.2.0 =》0.3.0patch补丁更新版本npm version patch0.2.0 =》0.2.1premajor重大更新预公布版本npm version premajor0.2.0 =》1.0.0-0preminor次要更新预公布版本npm version preminor0.2.0 =》0.3.0-0prepatch补丁更新预公布版本npm version prepatch0.2.0 =》0.2.1-0prerelease预公布版本npm version prerelease以后版本不是预公布版本的会出错from-git拿取git的tag作为版本号设置至package.json内npm version from-gitgit的tag标签没有设置的状况下,会抛出谬误对于prerelease的应用是存在前提。以后版本必须是预公布版本,如果不是预公布版本是会抛出谬误的,应用时须要留神。应用[--preid]提供额定参数还可用于详细描述预公布版本的作用,比方须要实现上面这种状况: ...

April 8, 2021 · 2 min · jiezi

关于vue.js:Vue项目npm包推荐

Vue我的项目npm包举荐 # dependencies"@jiaminghi/data-view": "^2.10.0", "promise-queue-plus": "^1.2.2",# devDependencies"@tweenjs/tween.js": "^18.6.4","archiver": "^3.1.1","copy-webpack-plugin": "^6.3.0","mockjs": "^1.0.1-beta3","node-ssh": "^6.0.0","svg-sprite-loader": "^5.0.0","svgo": "^1.3.2","zip": "^1.2.0"

March 29, 2021 · 1 min · jiezi

关于npm:nrm报错-ERRINVALIDARGTYPE-解决方法

windows 在上图标红处能够依据目录找到cli.js文件 而后将第17行的 const NRMRC = path.join(process.env.HOME, '.nrmrc'); 替换成 const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');

March 26, 2021 · 1 min · jiezi

关于npm:nodemodules一直报ErrorCannot-find-module-XXX的处理办法

internal/modules/cjs/loader.js:883报各种找不到文件,删除node-modules重新安装也不行。这个时候须要删除node-modules,外围把package-lock.json也一起删除,再重新安装,否则始终无奈解决。

March 26, 2021 · 1 min · jiezi

关于npm:npm-常用命令

查看指定package的所有线上版本 npm view <packagename> versions 查看npm全局装置的依赖 npm list -g --depth 0装置指定版本依赖包 npm install <packageName>//例如npm install vant@3.0.9卸载依赖包 npm uninstall <packageName>能够应用npx防止全局装置 //例如应用npx防止全局下载脚手架,能够间接创立我的项目:npx @vue/cli create project-test-vue3

March 16, 2021 · 1 min · jiezi

关于npm:npm中packagejson与packagelockjson的区别

package.json在npm中理论用处参考:npm根本应用这篇文章,接下来次要解说package-lock.json用处以及与package.json的不同 npm 5以前没有package-lock.json这个文件,须要保留依赖信息,每次装置时都要加上--save参数;npm5当前版本退出了package-lock.json文件。当安装包的时候,不须要加上--save参数,它会主动保留依赖信息,且会生成或更新package-lock.json这个文件。 而package-lock.json呈现有啥用处呢? 当咱们须要下载某一个包的时候,比方:npm install art-template,实际上不止下载了art-template一个包,还会下载art-template包的依赖包,以及其依赖包所依赖的各种包。查看art-template的package.json文件能够看到art-template的依赖包: 所以当咱们删除node_modules时,想要应用npm install通过package.json文件复原我的项目中所应用的相干的包时,整体工作流程是:查问package.json文件中要下载的包的下载地址,并下载,而后从以后下载后的包的package.json文件去查问还须要下载的依赖包,依据依赖包的地址再去下载依赖包。而这个查找的过程在有很多依赖包的状况下,下载的速度会显著降落,而此时,package-lock.json就派上了用处,这个文件保留了node_modules中所有的包(包含以后下载的包以及依赖包)的信息:版本、下载地址(这个信息在一开始第一次安装包时就写入了package-lock.json文件中)。这样当npm install 的时候间接从以后文件依据下载地址间接下载,而不再每次都先下载以后的包,再查问以后包的package.json文件再去下载。从而下载速度大大晋升。 咱们再来看一种状况:在理论我的项目开发过程中,并不是最新版本的包是适宜于以后我的项目的创立的,因而如果一个我的项目依赖了1.1.1版本,当你从新npm install的时候其实会下载最新版本,也不是1.1.1,也这也并不是咱们想要的后果,而咱们的目标次要想要锁住1.1.1这个版本,而package-lock.json这个文件在这个时候开始起作用,其能够锁定版本号,避免主动降级新版本,也就是说在package-lock.json中配置的版本号如果低于最新版本号,然而在npm install的时候也不会降级版本号,从而让package-lock.json文件名中的lock货真价实。 总结: package.json记录的是以后我的项目中你下载了哪些包(也即npm install xx 的包信息),记录了你下载的包信息(地址、版本号等),不蕴含依赖包信息。 package-lock.json文件记录的是以后我的项目中你下载了哪些包以及你下载的这些包的各种依赖包信息,包含地址、版本号等。次要作用有以下两点: 当删除node_module目录时,想通过npm install 复原所有包时,晋升下载速度。锁定版本号,避免主动降级新版本

March 15, 2021 · 1 min · jiezi

关于npm:npm基本使用

1. package.json文件作用:保留以后我的项目所应用的模块信息,作为包形容文件,当node_modules失落的时候,能够通过package.json文件疾速复原我的项目所应用的包 创立:通过npm init主动初始化 E:\前端\nodejs\实际>npm initThis 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 init` for definitive documentation on these fieldsand exactly what they do.Use `npm install <pkg>` afterwards to install a package andsave it as a dependency in the package.json file.Press ^C at any time to quit.package name: (实际) test // 创立项目名称version: (1.0.0) 0.0.1 // 我的项目版本号description: This is test // 我的项目形容entry point: (index.js) main.js// 我的项目入口文件test command:git repository: // 我的项目github地址keywords:author: zt // 我的项目作者license: (ISC)About to write to E:\前端\nodejs\实际\package.json: // package.json文件{ "name": "test", "version": "0.0.1", "description": "This is test", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "zt", "license": "ISC"}Is this OK? (yes) yes因为dependencies选项,能够保留第三方包的依赖信息,如果node_modules删除了,能够通过npm install主动把`package.json中的dependencies`中的所有的依赖项都下载回来 ...

March 11, 2021 · 1 min · jiezi

关于npm:mac-vscode不能识别-npm

配置 VScode 关上 settings.json 文件: ‘command’ + ‘,’ 键而后输出:shell,如下图,点击批改: settings.json 文件次要内容如下(次要是减少 ‘.osx’ 和 ‘.linux’ 结尾的属性值): { "editor.fontSize": 14, "files.autoSave": "onFocusChange", "git.autofetch": true, "window.zoomLevel": 0, "terminal.integrated.shell.osx": "/bin/zsh", "terminal.integrated.automationShell.linux": "/bin/zsh", "workbench.colorTheme": "Dark Chrome DevTools"}最初重启命令行,即可在 VSCode 运行 npm 等命令

February 22, 2021 · 1 min · jiezi

关于npm:npm-ERR-code-EINTEGRITY-安装taro报错解决方案

在应用taro 装置依赖包的时候,经常出现npm ERR! code EINTEGRITY的问题,应该是npm本地的缓存造成的。 删除package.lock.json文件(如果不想更改此文件,装完之后还原即可)npm cache clean --force (会有正告提醒,疏忽即可)npm i 重新安装亲测无效~

February 22, 2021 · 1 min · jiezi