We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Yalc 是一个比 npm | yarn link 更加先进的解决方法,能够避免相关依赖的问题。
在你开发 npm package 时,你肯定需要将正在开发的 package 注入到其他的项目中进行调试和测试,没问题后才会发布到 npm 上。NPM 和 Yarn 已经提出了类似 symlinks 的方案 (npm/yarn link)。虽然这在一般情况下很好用,但是它经常会有很恶心的依赖和约束问题 。
yalc
yalc publish
~/.yalc
yalc add my-package
.yalc
"file:.yalc/my-package"
yalc link my-package
yalc.lock
yarn.lock
package-lock.json
Using NPM:
npm i yalc -g
Using Yarn:
yarn global add yalc
文档中的一些功能可能还未发布,请浏览 change log。
preyalc
prepare
prepack
prepublishOnly
prepublish
postyalc
postpublish
--force
version
--no-sig
.yalcignore
--files
.npmignore
!yalc
!.yalc
package.json
file:.yalc/my-package
yalc add my-package@version
--link
link:
file:
--dev
--pure
modules
add
npm/yarn link
link
project/.yalc/my-package ==> project/node_modules/my-package
yalc update my-package
yalc update
scripts.postupdate
yalc remove my-package
yalc remove --all
yalc installations clean my-package
yalc installations show my-package
my-package
注意! 目前, yalc 会复制包内容到 node_modules 文件夹,但之后不会执行 yarn/npm install/update (除非你使用 --yarn/npm 选项) 命令,所以你或许要手动执行。
node_modules
yarn/npm
--yarn/npm
在运行 yalc add|link|update 时,会跟踪并保存项目位置包,因此 yalc 知道存储在本地环境中的每个包的位置。
yalc add|link|update
yalc publish --push 将你的包发布到存储区,并将所有更改传播到现有的 yalc 包安装( 这实际上会在位置上执行 update 操作)。
yalc publish --push
update
yalc push 是用于推送操作( 这将成为你主要使用的发布命令)的快捷键命令:
yalc push
force
true
pre/post
--no-force
使用 --changed 选项,yalc 将在发布和推送前检查包内容是否发生了变化,这是一个快速的操作,对于文件监测场景和推送更改可能很有用。
--changed
yalc'ed
.gitignore
yalc link
packages.json
yalc add
yalc check
README
LICENCE
如果你在 workspace 项目中添加 repo ,--pure 选项会默认使用,所以 package.json 和 modules 文件夹不会被更改。
workspace
然后,你会在 package.json 中添加 yalc 包到 workspace 项目中(可能只会添加 .yalc/* 和 .yalc/@*/* 这种形式)。当执行 update 或 push 操作时,包内容会自动更新并且 yarn 继续执行自己的操作。
.yalc/*
.yalc/@*/*
push
yarn
如果你不想使用 pure 行为,请使用 --no-pure 选项。
--no-pure
yalc installation clean [package]
--store-folder
WTF.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Yalc
Why
在你开发 npm package 时,你肯定需要将正在开发的 package 注入到其他的项目中进行调试和测试,没问题后才会发布到 npm 上。NPM 和 Yarn 已经提出了类似 symlinks 的方案 (npm/yarn link)。虽然这在一般情况下很好用,但是它经常会有很恶心的依赖和约束问题 。
Yalc 是什么
yalc
在本地环境中创建了一个共享的 本地 package 存储库。yalc publish
时,会将本来发布到 NPM 上的相关文件放到本地一个共享的全局存储中 (~/.yalc
)。yalc add my-package
时,它会将包内容拉入根目录的的.yalc
文件夹中,并将一个文件"file:.yalc/my-package"
注入 package.json。如果使用yalc link my-package
的话,就类似 npm | yarn link 一样创建项目链接,不会修改 package.json。yalc
会在根目录创建一个yalc.lock
文件(与yarn.lock
和package-lock.json
类似),用于确保行为一致性。安装
Using NPM:
Using Yarn:
文档中的一些功能可能还未发布,请浏览 change log。
使用
发布
yalc publish
。preyalc
,prepare
,prepack
,prepublishOnly
,prepublish
,这些生命周期 scripts,那么它们将在 publish 之前执行;同样的,postyalc
或postpublish
,将在之后执行。应用--force
可直接 publish 不去执行它们。yalc
会计算所有文件的哈希签名,默认情况下,将此签名添加到包清单version
中。您可以使用--no-sig
选项禁用此功能。.yalcignore
来排除像不需要发布到 yalc 本地库的文件。README.md etc--files
选项可以展示在 yalc 库中包含的文件。.yalc
文件夹或者在.npmignore
中加入!yalc
连同 C 一起发布,来防止引用出错。issue.yalc
的 npm 包,你应该在.npmignore
中加入!.yalc
。添加
yalc add my-package
,这将从 yalc 库中复制一份包到当前的项目.yalc
文件夹并且在package.json
的 dependency 中注入file:.yalc/my-package
yalc add my-package@version
来制定版本,这个版本将同步到yalc.lock
文件。--link
选项将在 dependency 中添加link:
而不是file:
。--dev
选项将 yalc 包添加到 dev dependencies。--pure
选项将不再关心package.json
文件,也不会更改modules
文件夹,这个在使用 Yarn workspaces 时很有用。(下文有介绍)链接
add
之外,你可以使用类似npm/yarn link
的link
命令,但符号链接源不是全局链接目录,而是项目的本地.yalc
文件夹。yalc
将软件包内容复制到.yalc
文件夹之后,它将创建一个符号链接:project/.yalc/my-package ==> project/node_modules/my-package
在这种情况下它不会接触到package.json
。更新
yalc update my-package
从存储中更新最新版本。yalc update
以更新yalc.lock
中找到的所有软件包。scripts.postupdate
生命周期命令。删除
yalc remove my-package
,它将从package.json
和yalc.lock
中删除软件包信息。yalc remove --all
从项目中删除所有软件包。安装
yalc installations clean my-package
来取消发布通过yalc publish
发布的包。yalc installations show my-package
来展示my-package
安装的所有包。注意! 目前,
yalc
会复制包内容到node_modules
文件夹,但之后不会执行yarn/npm
install/update (除非你使用--yarn/npm
选项) 命令,所以你或许要手动执行。高级用法
自动将更新推送到所有安装
在运行
yalc add|link|update
时,会跟踪并保存项目位置包,因此yalc
知道存储在本地环境中的每个包的位置。yalc publish --push
将你的包发布到存储区,并将所有更改传播到现有的yalc
包安装( 这实际上会在位置上执行update
操作)。yalc push
是用于推送操作( 这将成为你主要使用的发布命令)的快捷键命令:force
选项是true
,因此它不会运行pre/post
脚本( 可以使用--no-force
标志更改这里选项)。使用
--changed
选项,yalc 将在发布和推送前检查包内容是否发生了变化,这是一个快速的操作,对于文件监测场景和推送更改可能很有用。Keep it out of git
yalc'ed
模块,则首先向.gitignore
添加.yalc
和yalc.lock
。yalc link
,它不会更改packages.json
。yalc add
的时候,如果你忘了删除它,那么你可以在 precommit hook 中使用yalc check
,它来检查 package.json 的yalc'ed
依赖项,存在则提示错误 。Keep it in git
yalc'ed
内容,并将它的视为项目代码库的一部分。 这样做可以简化管理和使用共享插件的操作和使用,在项目中进行打包,并帮助使事情一致。 那么,就这么做吧,把.yalc
文件夹和yalc.lock
保存在 git 中。README
,LICENCE
这样的非代码文件,也会包含在内,所以你可能会在.gitignore
中加入它们,或者你也可以在.yalcignore
中加入它们。Use with Yarn workspaces!
如果你在
workspace
项目中添加 repo ,--pure
选项会默认使用,所以package.json
和 modules 文件夹不会被更改。然后,你会在
workspace 项目中(可能只会添加
package.json
中添加 yalc 包到.yalc/*
和.yalc/@*/*
这种形式)。当执行update
或push
操作时,包内容会自动更新并且yarn
继续执行自己的操作。如果你不想使用 pure 行为,请使用
--no-pure
选项。清理安装文件
yalc installation clean [package]
。修改 yalc 包的默认存储路径
--store-folder
选项来修改发布的 yalc 包的存储路径。相关链接
Licence
WTF.
The text was updated successfully, but these errors were encountered: