您可能想跳过序言。
我有一个具有以下结构的 npm 包:
lib/index.js
src/index.coffee
源文件是一个 CoffeeScript 文件。我有一个用于从源文件构建 JavaScript 文件的 make 目标。直到最近,我在每次提交中都包含了对 JavaScript 文件的更改,但我现在将xyz与预发布脚本一起使用:
XYZ = node_modules/.bin/xyz --script scripts/prepublish
.PHONY: release-major release-minor release-patch
release-major: LEVEL = major
release-minor: LEVEL = minor
release-patch: LEVEL = patch
release-major release-minor release-patch
@$(XYZ) --increment $(LEVEL)
预发布脚本很简单:
#!/usr/bin/env bash
set -e
rm -f lib/index.js
make lib/index.js
git add lib/index.js
这意味着每次我发布一个新版本时(make release-patch
例如通过运行),lib/index.js将被重建并添加到发布提交中。到目前为止一切正常。
由于发布脚本会自动更新编译后的文件,我不再希望每次提交时都手动更新它。问题是运行后make test
,git status
将lib/index.js列为修改后的跟踪文件。我想避免意外提交这个文件,所以我想防止它被git status
.
我尝试的第一件事是添加/lib/
到.gitignore。但是,这不起作用,因为lib/index.js已经被跟踪。
然后我发现git update-index --assume-unchanged
。我使用作为参数运行此命令lib/index.js
,并且该文件不再由git status
. 到目前为止,一切都很好。但现在,它git add lib/index.js
不再起作用,因此预发布脚本将无法完成其工作。
我相信 prepublish 脚本可以在git update-index --no-assume-unchanged lib/index.js
之前运行git add
,然后可以使用git update-index --assume-unchanged lib/index.js
. 这真的是最好的方法吗?
总而言之,如何在保留文件功能的同时忽略对跟踪文件的更改git add
?