Found 198 repositories(showing 30)
aspiers
git commit dependency analysis tool
tobyhede
git dependencies for leiningen
abhir98
Project Summary This project was developed for the Computer Security course at my academic degree. Basically, it will encrypt your files in background using AES-256-CTR, a strong encryption algorithm, using RSA-4096 to secure the exchange with the server, optionally using the Tor SOCKS5 Proxy. The base functionality is what you see in the famous ransomware Cryptolocker. The project is composed by three parts, the server, the malware and the unlocker. The server store the victim's identification key along with the encryption key used by the malware. The malware encrypt with a RSA-4096 (RSA-OAEP-4096 + SHA256) public key any payload before send then to the server. This approach with the optional Tor Proxy and a .onion domain allow you to hide almost completely your server. Features Run in Background (or not) Encrypt files using AES-256-CTR(Counter Mode) with random IV for each file. Multithreaded. RSA-4096 to secure the client/server communication. Includes an Unlocker. Optional TOR Proxy support. Use an AES CTR Cypher with stream encryption to avoid load an entire file into memory. Walk all drives by default. Docker image for compilation. Building the binaries DON'T RUN ransomware.exe IN YOUR PERSONAL MACHINE, EXECUTE ONLY IN A TEST ENVIRONMENT! I'm not resposible if you acidentally encrypt all of your disks! First of all download the project outside your $GOPATH: git clone github.com/mauri870/ransomware cd ransomware If you have Docker skip to the next section. You need Go at least 1.11.2 with the $GOPATH/bin in your $PATH and $GOROOT pointing to your Go installation folder. For me: export GOPATH=~/gopath export PATH=$PATH:$GOPATH/bin export GOROOT=/usr/local/go Build the project require a lot of steps, like the RSA key generation, build three binaries, embed manifest files, so, let's leave make do your job: make deps make You can build the server for windows with make -e GOOS=windows. Docker ./build-docker.sh make Config Parameters You can change some of the configs during compilation. Instead of run only make, you can use the following variables: HIDDEN='-H windowsgui' # optional. If present the malware will run in background USE_TOR=true # optional. If present the malware will download the Tor proxy and use it to contact the server SERVER_HOST=mydomain.com # the domain used to connect to your server. localhost, 0.0.0.0, 127.0.0.1 works too if you run the server on the same machine as the malware SERVER_PORT=8080 # the server port, if using a domain you can set this to 80 GOOS=linux # the target os to compile the server. Eg: darwin, linux, windows Example: make -e USE_TOR=true SERVER_HOST=mydomain.com SERVER_PORT=80 GOOS=darwin The SERVER_ variables above only apply to the malware. The server has a flag --port that you can use to change the port that it will listen on. DON'T RUN ransomware.exe IN YOUR PERSONAL MACHINE, EXECUTE ONLY IN A TEST ENVIRONMENT! I'm not resposible if you acidentally encrypt all of your disks! Step by Step Demo and How it Works For this demo I'll use two machines, my personal linux machine and a windows 10 VM. For the sake of simplicity, I have a folder mapped to the VM, so I can compile from my linux and copy to the vm. In this demo we will use the Ngrok tool, this will allow us to expose our server using a domain, but you can use your own domain or ip address if you want. We are also going to enable the Tor transport, so .onion domains will work without problems. First of all lets start our external domain: ngrok http 8080 This command will give us a url like http://2af7161c.ngrok.io. Keep this command running otherwise the malware won't reach our server. Let's compile the binaries (remember to replace the domain): make -e SERVER_HOST=2af7161c.ngrok.io SERVER_PORT=80 USE_TOR=true The SERVER_PORT needs to be 80 in this case, since ngrok redirects 2af7161c.ngrok.io:80 to your local server port 8080. After build, a binary called ransomware.exe, and unlocker.exe along with a folder called server will be generated in the bin folder. The execution of ransomware.exe and unlocker.exe (even if you use a diferent GOOS variable during compilation) is locked to windows machines only. Enter the server directory from another terminal and start it: cd bin/server && ./server --port 8080 To make sure that all is working correctly, make a http request to http://2af7161c.ngrok.io: curl http://2af7161c.ngrok.io If you see a OK and some logs in the server output you are ready to go. Now move the ransomware.exe and unlocker.exe to the VM along with some dummy files to test the malware. You can take a look at cmd/common.go to see some configuration options like file extensions to match, directories to scan, skipped folders, max size to match a file among others. Then simply run the ransomware.exe and see the magic happens 😄. The window that you see can be hidden using the HIDDEN option described in the compilation section. After download, extract and start the Tor proxy, the malware waits until the tor bootstrapping is done and then proceed with the key exchange with the server. The client/server handshake takes place and the client payload, encrypted with an RSA-4096 public key must be correctly decrypted on the server. The victim identification and encryption keys are stored in a Golang embedded database called BoltDB (it also persists on disk). When completed we get into the find, match and encrypt phase, up to N-cores workers start to encrypt files matched by the patterns defined. This proccess is really quick and in seconds all of your files will be gone. The encryption key exchanged with the server was used to encrypt all of your files. Each file has a random primitive called IV, generated individually and saved as the first 16 bytes of the encrypted content. The algorithm used is AES-256-CTR, a good AES cypher with streaming mode of operation such that the file size is left intact. The only two sources of information available about what just happen are the READ_TO_DECRYPT.html and FILES_ENCRYPTED.html in the Desktop. In theory, to decrypt your files you need to send an amount of BTC to the attacker's wallet, followed by a contact sending your ID(located on the file created on desktop). If the attacker can confirm your payment it will possibly(or maybe not) return your encryption key and the unlocker.exe and you can use then to recover your files. This exchange can be accomplished in several ways and WILL NOT be implemented in this project for obvious reasons. Let's suppose you get your encryption key back. To recover the correct key point to the following url: curl -k http://2af7161c.ngrok.io/api/keys/:id Where :id is your identification stored in the file on desktop. After, run the unlocker.exe by double click and follow the instructions. That's it, got your files back 😄 The server has only two endpoints: POST api/keys/add - Used by the malware to persist new keys. Some verifications are made, like the verification of the RSA autenticity. Returns 204 (empty content) in case of success or a json error. GET api/keys/:id - Id is a 32 characters parameter, representing an Id already persisted. Returns a json containing the encryption key or a json error The end As you can see, building a functional ransomware, with some of the best existing algorithms is not difficult, anyone with some programming skills can build that in any programming language.
rohansx
git worktrees that actually work (zero-config dep sync, fleet mode for parallel agents)
bozaro
Utility to create .gitdeps.xml files for Unreal Engine
omnyway-labs
Tool to simplify workflow with Git-based Clojure dependencies using clojure.tools.deps
Valodim
git script to automatically create simple fixup commits from currently staged changes
denoland
For floating patches on top of https://chromium.googlesource.com/chromium/deps/icu.git
xiaoyin998
###什么是Linux系统,Linux有哪些部分,Linux都用在了哪些地方? Linux是一套免费使用和自由传播的类Unix操作系统,Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。 其创始人为林纳斯·托瓦兹,于1991 年10 月5 日诞生。 系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等,Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。其完全兼容POSIX1.0标准,这为用户从Windows转到Linux奠定了基础。 Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。 Linux由于其稳定性高、完全免费,目前主要用于服务器市场。 ###Linux和Windows有什么区别,Linux有哪些优势? 其同时具有字符界面和图形界面,开放源代码,用户可以通过网络或其他途径免费获得Linux,并可以任意修改其源代码,这是windows所做不到的。 ###Linux的基本文件(夹)操作命令有哪些? 1.date :设置系统日期和时间。 2. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等) 3. passwd: print or set the system date and time (用passwd -h查看) 4. logout, login: 登录shell的登录和注销命令 5. pwd: 加载目录。 6. more, less, head tail: 显示或部分显示文件内容. 7. lp/lpstat/cancel, lpr/lpq/lprm: 打印文件. 8. 更改文件权限: chmod u+x... 9. 删除非空目录:rm -fr dir 10.拷贝目录: cp -R dir 11. fg jobid :可以将一个后台进程放到前台。 Ctrl-z 可以将前台进程挂起(suspend), 然后可以用bg jobid 让其到后台运行。 job & 可以直接让job直接在后台运行。 12. kill: 向一个进程发送控制信号。 13.卸载: dpkg -r package 14.卸载并删除配置文件: dpkg -P |--purge package 15.安装: dpkg -i package 16. 查看软件包安装内容 :dpkg -L package 17.查看文件由哪个软件包提供: dpkg -S filename 18. 安装: apt-get install packs 19. apt-get update : 更新源 20.apt-get upgrade: 升级系统。 21. apt-get dist-upgrade: 智能升级。安装新软件包,删除废弃的软件包 22. apt-get -f install : -f == --fix broken 修复依赖 23. apt-get autoremove: 自动删除无用的软件 24. apt-get remove packages :删除软件 25. apt-get remove package --purge 删除包并清除配置文件 26. 清除删除包的残余配置文件: dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P 27.安装软件时候包的临时存放目录 : /var/cache/apt/archives 28. 清除该目录: apt-get clean 29. 清除该目录的旧版本的软件缓存: apt-get autoclean 30. 查询软件some的依赖包: apt-cache depends some 31. 查询软件some被哪些包依赖: apt-get rdepends some 32. 搜索软件: apt-cache search name|regexp 33. 查看软件包的作用:apt-cache show package 34. 查看一个软件的编译依赖库: apt-cache showsrc packagename|grep Build-Depends 35. 下载软件的源代码 : apt-get source packagename (注: sources.list 中应该有 deb-src 源) 36. 安装软件包源码的同时, 安装其编译环境 :apt-get build-dep packagename (有deb-src源) 37.将本地光盘加入安装源列表: apt-cdrom add 38. 查看内核版本: uname -a 39. 查看ubuntu 版本: cat /etc/issue 40. 查看网卡状态 : ethtool eth0 41. 查看内存,cpu的信息: cat /proc/meminfo ; cat /proc/cpuinfo 42. 打印文件系统空间使用情况: df -h 43. 查看硬盘分区情况: fdisk -l 44. 产看文件大小: du -h filename; 45. 查看目录大小: du -hs dirname ; du -h dirname是查看目录下所有文件的大小 46. 查看内存的使用: free -m|-g|-k 47. 查看进程: ps -e 或ps -aux -->显示用户 48. 杀掉进程: kill pid 49. 强制杀掉: killall 等等。 ###什么是开源软件,开源社区有哪些,开源软件有什么优势和劣势? 开源软件即开放源代码软件,其源码可以被公众使用,并且此软件的使用,修改和分发也不受许可证的限制。 开源社区包括开源中国、GoogleCode、GitHub、SourceForge、CodeProject、Apache、ChinaUnix、CodePlex、LUPA、Linux中文社区、51开源社区、Open-Open等。 开源软件优点是免费,代码开放,方便其他程序员编辑;缺点是安全性得不到保障。 ###为什么要有版本控制,git都有哪些操作,和GitHub有什么关系? 版本控制可以保证修改文件或代码时不破坏掉修改前的状态;发布软件的时候很多时候会有多个版本,而生成软件的源代码却往往只有一份,只是在最后编译生成的时候用到不同的部分,大部分代码还是共用的,所以往往需要版本控制,几个版本复制几个文件夹出来。 git update-index –-skip-worktree [file] 可以实现修改本地文件不会被提交,但又可以拉取最新更改的需求。 git update-index --no-assume-unchanged重新跟踪 pretty=oneline 每个提交日志信息只显示一行 git checkout – readme.txt把readme.txt文件在工作区的修改全部撤销 git reset HEAD readme.txt把暂存区的修改撤销掉,重新放回工作区 git checkout – readme.txt撤销修改,也就是回到版本库的状态 git remote add origin 远程版本库URL:git push -u origin master把本地的master分支和远程的master分支关联起来 git log --graph 命令可以看到分支合并图 等等。 git是软件,它可在本地建立仓库,你写的代码的各个版本都可以存储,github是网上仓库,你写的代码的各个版本都可以存储。 Tom之所以把网站叫做Github,是因为其核心部分版本控制是用Git来处理的。gitHub是一个面向开源及私有软件项目的托管平台, 因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。 ###ARM架构处理器都有哪些,有什么特点,处理器的结构都有哪些,有哪些特点? ARMv7架构的Cortex-A5,A7,A8,A9,A12,A15,ARMv8架构的Cortex-A53,A57,A72。 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定。 CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元。逻辑单元包括指令寄存器、指令译码器、控制单元、寄存器、逻辑运算单元(ALU)、预取单元、总线单元、数据高速缓存。 AMD的CPU特点是核心数量多,单核性能低,功耗比较高,性价比比较高;英特尔的CPU的特点是,核心数量少,单核性能强,所以对于绝大多数游戏来说都比AMD的表现要好,功耗低,发热低,比较主流。 ###为什么在路由器中可以安装Linux,在路由器中使用的Linux和在桌面端使用的有什么区别? Linux支持路由器功能,如OpenWrt、LEDE,都是基于Linux的路由器系统。 ###为什么要有操作系统? 操作系统是一种驱动程序。让人们不需要关心一些硬件细节,就可以使用硬件。 可享使用硬件资源;为使用者指定一些规范,让不同的使用者可以共享使用硬件。 操作系统就是为了让人们更加方便的使用硬件资源的一个工具,让我们更好地使用硬件资源各种硬件资源。 ###自己对计算机分层思想的理解。 分层思想主要就是将一个复杂的计算机网络分开管理,各个层实行相应的功能,便于管理,和标准的实行。分层思想是一种模块化设计,总的来说就是为了方便。 ###UART串口通信的层次结构是怎样的? 起始位:先发一个逻辑“0”信号,表示传输的开始 数据位:紧接着起始位,从低位开始传动,发送速率靠时钟确定 停止位:数据位加上这一为使得“1”的位数为偶数(偶校验)或奇数(奇校验),以此来校验数据的正确性 停止位:一个字符数据的结束标 空闲位:处于逻辑“1”状态,表示当前线路没有数据传输。 ###为什么Qt可以跨平台使用而VS不能,C语言的编译步骤是怎样的,常用的编译器有哪些? 针对每一种OS平台,QT都有一套对应的底层类库,而接口是完全一致的,因此只要是在QT库上开发的程序,放在任何一种平台下都可以编译运行。 【第一步】编辑hello.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 printf("hello world!\n"); 6 return 0; 7 } 【第二步】预处理 预处理过程实质上是处理“#”,将#include包含的头文件直接拷贝到hell.c当中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等。 (1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换 (2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些 (3)处理#include,将#include指向的文件插入到该行处 (4)删除所有注释 (5)添加行号和文件标示,这样的在调试和编译出错的时候才知道是是哪个文件的哪一行 (6)保留#pragma编译器指令,因为编译器需要使用它们。 【第三步】编译 (1)词法分析, (2)语法分析 (3)语义分析 (4)优化后生成相应的汇编代码 【第四步】链接 常用的编译器: Cygwin、Mingw32、DJGPP、Dev-C++、GNU C++、MSC 5.0、6.0、7.0、MSQC 1.0、2.5、MSVC 1.0、4.2、6.0、7.0、Visual C++等等。 ###C语言中主函数的返回值可以返回什么东西,主函数的参数又是如何确定的? main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。返回值为1的时候则代表程序运行遇到问题失败。 主函数的第一个参数是一个整数,它表示第二个参数里的指针个数,主函数的第二个参数是一个字符指针数组,其中每个指针代表一个字符串,所有这些字符串的内容都来自于用户的命令。 argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数, char*envp[]用来取得系统的环境变量。
DepShield
Microsite for Sonatype DepShield
paulwellnerbou
Docker file for git-deps server and command line
{ "name": "bootstrap", "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", "version": "4.5.0", "version_short": "4.5", "keywords": [ "css", "sass", "mobile-first", "responsive", "front-end", "framework", "web" ], "homepage": "https://getbootstrap.com/", "author": "The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)", "contributors": [ "Twitter, Inc." ], "scripts": { "start": "npm-run-all --parallel watch docs-serve", "bundlewatch": "bundlewatch --config .bundlewatch.config.json", "css": "npm-run-all css-compile css-prefix css-minify css-copy", "css-copy": "cross-env-shell shx mkdir -p site/docs/$npm_package_version_short/dist/ && cross-env-shell shx cp -r dist/css/ site/docs/$npm_package_version_short/dist/", "css-main": "npm-run-all css-lint css-compile-main css-prefix-main css-minify-main css-copy", "css-docs": "npm-run-all css-compile-docs css-prefix-docs css-minify-docs", "css-compile": "npm-run-all --parallel css-compile-*", "css-compile-main": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist/css/ && npm run css-copy", "css-compile-docs": "cross-env-shell node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 site/docs/$npm_package_version_short/assets/scss/docs.scss site/docs/$npm_package_version_short/assets/css/docs.min.css", "css-lint": "npm-run-all --continue-on-error --parallel css-lint-*", "css-lint-main": "stylelint \"scss/**/*.scss\" --cache --cache-location .cache/.stylelintcache", "css-lint-docs": "stylelint \"site/docs/**/assets/scss/*.scss\" \"site/docs/**/*.css\" --cache --cache-location .cache/.stylelintcache", "css-lint-vars": "fusv scss/ site/docs/", "css-minify": "npm-run-all --parallel css-minify-*", "css-minify-main": "cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css", "css-minify-docs": "cross-env-shell cleancss --level 1 --format breakWith=lf --source-map --source-map-inline-sources --output site/docs/$npm_package_version_short/assets/css/docs.min.css site/docs/$npm_package_version_short/assets/css/docs.min.css", "css-prefix": "npm-run-all --parallel css-prefix-*", "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.min.css\"", "css-prefix-docs": "postcss --config build/postcss.config.js --replace \"site/docs/**/*.css\"", "js": "npm-run-all js-compile js-minify js-copy", "js-copy": "cross-env-shell shx mkdir -p site/docs/$npm_package_version_short/dist/ && cross-env-shell shx cp -r dist/js/ site/docs/$npm_package_version_short/dist/", "js-main": "npm-run-all js-lint js-compile js-minify-main", "js-docs": "npm-run-all js-lint-docs js-minify-docs", "js-compile": "npm-run-all --parallel js-compile-* --sequential js-copy", "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap", "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap", "js-compile-plugins": "node build/build-plugins.js", "js-compile-plugins-coverage": "cross-env NODE_ENV=test node build/build-plugins.js", "js-lint": "npm-run-all --continue-on-error --parallel js-lint-*", "js-lint-main": "eslint --report-unused-disable-directives --cache --cache-location .cache/.eslintcache js/src js/tests build/", "js-lint-docs": "eslint --report-unused-disable-directives --cache --cache-location .cache/.eslintcache site/", "js-minify": "npm-run-all --parallel js-minify-main js-minify-docs", "js-minify-main": "npm-run-all js-minify-standalone js-minify-bundle", "js-minify-standalone": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js", "js-minify-bundle": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js", "js-minify-docs": "cross-env-shell terser --mangle --comments \\\"/^!/\\\" --output site/docs/$npm_package_version_short/assets/js/docs.min.js site/docs/$npm_package_version_short/assets/js/vendor/anchor.min.js site/docs/$npm_package_version_short/assets/js/vendor/clipboard.min.js site/docs/$npm_package_version_short/assets/js/vendor/bs-custom-file-input.min.js \"site/docs/$npm_package_version_short/assets/js/src/*.js\"", "js-test": "npm-run-all js-test-karma* js-test-integration", "js-test-karma": "karma start js/tests/karma.conf.js", "js-test-karma-old": "cross-env USE_OLD_JQUERY=true npm run js-test-karma", "js-test-karma-bundle": "cross-env BUNDLE=true npm run js-test-karma", "js-test-karma-bundle-old": "cross-env BUNDLE=true USE_OLD_JQUERY=true npm run js-test-karma", "js-test-integration": "rollup --config js/tests/integration/rollup.bundle.js", "js-test-cloud": "cross-env BROWSER=true npm run js-test-karma", "lint": "npm-run-all --parallel js-lint css-lint lockfile-lint", "docs": "npm-run-all css-docs js-docs docs-build docs-lint", "docs-build": "bundle exec jekyll build", "docs-compile": "npm run docs-build", "docs-production": "cross-env JEKYLL_ENV=production npm run docs-build", "docs-netlify": "cross-env JEKYLL_ENV=netlify npm run docs-build", "docs-linkinator": "linkinator _gh_pages --recurse --silent --skip \"^(?!http://localhost)\"", "docs-vnu": "node build/vnu-jar.js", "docs-lint": "npm-run-all --parallel docs-vnu docs-linkinator", "docs-serve": "bundle exec jekyll serve", "docs-serve-only": "npm run docs-serve -- --skip-initial-build --no-watch", "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json", "update-deps": "ncu -u -x \"jquery,karma-browserstack-launcher,popper.js,qunit,sinon\" && npm update && bundle update && cross-env-shell echo Manually update \\\"site/docs/$npm_package_version_short/assets/js/vendor/\\\"", "release": "npm-run-all dist release-sri docs-build release-zip*", "release-sri": "node build/generate-sri.js", "release-version": "node build/change-version.js", "release-zip": "cross-env-shell \"shx rm -rf bootstrap-$npm_package_version-dist && shx cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && shx rm -rf bootstrap-$npm_package_version-dist\"", "release-zip-examples": "node build/zip-examples.js", "dist": "npm-run-all --parallel css js", "test": "npm-run-all lint dist js-test docs-build docs-lint", "netlify": "npm-run-all dist release-sri docs-netlify", "watch": "npm-run-all --parallel watch-*", "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm run css-main\"", "watch-css-docs": "nodemon --watch \"site/docs/**/assets/scss/\" --ext scss --exec \"npm run css-docs\"", "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm run js-compile\"", "watch-js-docs": "nodemon --watch \"site/docs/**/assets/js/src/\" --ext js --exec \"npm run js-docs\"" }, "style": "dist/css/bootstrap.css", "sass": "scss/bootstrap.scss", "main": "dist/js/bootstrap.js", "repository": { "type": "git", "url": "git+https://github.com/twbs/bootstrap.git" }, "bugs": { "url": "https://github.com/twbs/bootstrap/issues" }, "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/bootstrap" }, "dependencies": {}, "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.0" }, "devDependencies": { "@babel/cli": "^7.8.4", "@babel/core": "^7.9.6", "@babel/plugin-proposal-object-rest-spread": "^7.9.6", "@babel/preset-env": "^7.9.6", "@rollup/plugin-commonjs": "^11.1.0", "@rollup/plugin-node-resolve": "^7.1.3", "autoprefixer": "^9.7.6", "babel-eslint": "^10.1.0", "babel-plugin-istanbul": "^6.0.0", "bundlewatch": "^0.2.7", "clean-css-cli": "^4.3.0", "cross-env": "^7.0.2", "eslint": "^7.0.0", "find-unused-sass-variables": "^2.0.0", "glob": "^7.1.6", "hammer-simulator": "0.0.1", "ip": "^1.1.5", "jquery": "^3.5.1", "karma": "^5.0.5", "karma-browserstack-launcher": "1.4.0", "karma-chrome-launcher": "^3.1.0", "karma-coverage-istanbul-reporter": "^3.0.2", "karma-detect-browsers": "^2.3.3", "karma-firefox-launcher": "^1.3.0", "karma-qunit": "^4.1.1", "karma-sinon": "^1.0.5", "linkinator": "^2.1.1", "lockfile-lint": "^4.2.2", "node-sass": "^4.14.1", "nodemon": "^2.0.3", "npm-run-all": "^4.1.5", "popper.js": "^1.16.0", "postcss-cli": "^7.1.1", "qunit": "2.9.2", "rollup": "^2.9.1", "rollup-plugin-babel": "^4.4.0", "shelljs": "^0.8.4", "shx": "^0.3.2", "sinon": "^7.5.0", "stylelint": "^13.3.3", "stylelint-config-twbs-bootstrap": "^2.0.2", "terser": "^4.6.13", "vnu-jar": "20.3.16" }, "files": [ "dist/{css,js}/*.{css,js,map}", "js/{src,dist}/**/*.{js,map}", "scss/**/*.scss" ], "jspm": { "registry": "npm", "main": "js/bootstrap", "directories": { "lib": "dist" }, "shim": { "js/bootstrap": { "deps": [ "jquery", "popper.js" ], "exports": "$" } }, "dependencies": {}, "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.16.0" } } }
oanda
Lightweight alternative to submodules
Lercas
https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised
andreyvit
Git-dep command to handle multiple repositories with dependencies
amaysim-au
Go, Dep, and Git
dropseed
Deps component for updating git dependencies
York-IE-Labs
List dependencies of an organization's github repo(s). Outputs to a markdown file as a table.
probwebdev
Docker build base images with required deps such as git, pnpm etc.
ZachiNachshon
Sync git repositories as external source dependencies
prasincs
No description available
avivkeller
No description available
sebastien
Git submodule alternative
junosuarez
cli tool: make it easier to install git+ssh deps
aizatto
Symfony (http://www.symfony.com) using git submodules instead of deps
hugomods
GitHub Action to update Hugo Modules
DepSurf
Revealing the Unstable Foundations of eBPF-Based Kernel Extensions
dan-mba
No description available
abandonware-pjz37
No description available
Github action to check packages updates from lock file