我想得到我的node.js项目的所有外部依赖项的列表,这是我的项目所需的模块和这些模块所需的模块.我尝试了两种方法,
node_modules目录中所需的模块.package.json.嗯,不是真正的工具,它只意味着简单的npm ls调用.第二种方法的问题是列出指定为的包devDependencies.我意识到我会很乐意跑步npm ls --no-dev或类似的事情.我试过了npm ls --production,但没有任何区别.知道如何实现它吗?
我有一个表示为嵌套向量的树.我想indexed对树进行泛化,显示每个节点的索引,如下所示,
(visit 42); => [0 42]
(visit [6 7]); => [0
; [[0 6]
; [1 7]]]
Run Code Online (Sandbox Code Playgroud)
天真的实现将直接使用clojure.zip(如此处已经提到的那样)
(defn visit [tree]
(loop [loc (vector-zip tree)]
(if (end? loc)
(root loc)
(recur
(next (edit loc #(conj
[(count (lefts loc))]
%)))))))
Run Code Online (Sandbox Code Playgroud)
但是反复出现clojure.zip/next执行前序遍历,在这种情况下导致无限循环(未访问的节点无限地conj进入[:found]向量).另一种方法是使用clojure.walk/postwalk,但它不提供结构信息,例如索引.
你会如何实现这个?是否有postorder-next拉链可以立即解决?
我正在寻找一个工具或一组工具来转换文件格式D和M在哪里
到目前为止我发现了什么
更新:
用例是技术人员和非技术人员之间的文档工作流程
我标记版本hg tag <version-number>.当我发布错误修复时,我不想增加版本号,但我想在构建过程中使用最新的版本号.如果我运行hg tags,它将tip首先显示,然后版本号按降序显示.我可以让它运行hg tags | head -n2 | tail -n1.我想知道是否有更优雅,纯粹的善变方式来获得它.
我正在努力改善Gradle的启动时间.这种实验性--daemon开关似乎没有真正加快速度.所以我想使用一些独立于gradle的服务器进程,并使gradle连接到它.到目前为止我找到的选项是
由于gradle是由shell脚本启动的,因此需要进行一些调整.我的问题是:是否有人使用上述选项开始gradle?或者,如果您已成功使用其他选项,那是什么?
我可能会错过这个Makefile非常明显的东西:
convert: devel/bar
touch convert
init: devel/foo
echo 'init'
devel/foo:
mkdir -p devel
touch devel/foo
devel/bar: init
touch devel/bar
Run Code Online (Sandbox Code Playgroud)
当我运行它时,devel/bar目标总是被调用.我希望它可以调用convert,检查文件devel/bar,并仅在找不到该文件时调用该目标.如果我删除它的依赖init,一切都按照我的预期工作.我究竟做错了什么?
我有一个代码库,它大量使用get和get-in嵌套表单.我希望能够使用本机javascript对象,没有(很多)代码重写.
js> cljs.user.o = {foo: 42} // in js console
cljs.user> (get o "foo") ; => 42 ; in cljs console
Run Code Online (Sandbox Code Playgroud)
由于我只查询表单,但不修改它们,我认为它足以实现get(get-in依赖于它).这是我的尝试,
(extend-protocol ILookup
js/Object
(-lookup [m k] (aget m k))
(-lookup [m k not-found (or (aget m k) not-found)))
Run Code Online (Sandbox Code Playgroud)
它似乎有效,但它以一种奇怪的方式打破了很多东西.
我有一个project.clj文件,我想根据leiningen调用时传入的参数使用不同的文件.这是我的假设示例项目
(defproject simple "0.0.1"
:source-paths [(get-argument "source.path")])
Run Code Online (Sandbox Code Playgroud)
(在这种情况下get-argument只会打电话System/getProperty).我会像这样使用这个文件,
lein2 compile -Dsource.path=path/to/location
Run Code Online (Sandbox Code Playgroud)
问题是双重的,
-Dkey=value语法.我在关于传递可选/额外参数的文档中找不到任何内容.我错过了一些明显的东西吗defproject似乎是以特殊方式处理的.我找不到一种简单的方法来将代码放入其中.我找到了一些方法
(我实际想要使用它的是我有一个带有不同工件的clojurescript项目.虽然可以为它配置不同的构建,但它们都共享相同的交叉.)
这是区别:
clj> (get 42 :anything) ; => nil
cljs> (get 42 :anything) ; => Error: No protocol method ILookup.-lookup defined for type number: 42
Run Code Online (Sandbox Code Playgroud)
我不知道这是ClojureScript中的错误还是无证的差异,或者我只是遗漏了一些东西.