我想在markdown中使用子弹点而不是星号(*)字符来创建vscode渲染列表,以便顶级使用•,下一个将使用◦等.
我的第一种方法是使用FontForge创建一个连字字体,用◦替换*,用◦替换空格加*,用▪替换两个空格加*,依此类推,但是使用连字有明显的问题,它不是上下文敏感的,所以所有星号将被替换,而不仅仅是那些领先一行的星号.
查看vscode文本修饰API,它似乎仅限于更改字体样式和颜色,而不是字体系列.有没有办法在视觉上替换vscode中的字符?它们仍应在源代码中保存为星号,以便有效降价.
markdown ligature visual-studio-code vscode-extensions monaco-editor
可以为单独的脚本设置工作目录:
- script: foo
workingDirectory: bar
Run Code Online (Sandbox Code Playgroud)
但是,如果所有步骤都打算在特定目录中运行,则为每个步骤定义它就会变得重复。
使用cd
不影响其他步骤:
- script: cd foo
- script: pwd # returns default working dir instead of foo
Run Code Online (Sandbox Code Playgroud)
这个问题很重要的两个具体例子是:
为 npm 打包代码时的标准方法是将转译或捆绑的代码放在单独的lib
,dist
或build
目录中,并将package.main
属性(和module
/ browser
)设置为指向构建的文件,这使得在执行裸导入时构建目录的存在是透明的(没有路径)。但是,如果需要深度导入(导入package.json
属性中未引用的特定模块),则意味着构建目录需要包含在路径中,如下所示:require('package/lib/some-module')
,这看起来很糟糕。
是否有任何方法的例子可以同时:
npm-link
和工具,如 Lerna我尝试过或看到的每一种方法都不符合其中一个标准;例如,复制package.json
到构建目录 ( lib
/ dist
) 允许从构建目录发布或链接包,但是像 Lerna 这样的工具不支持这种方法,因为它们希望package.json
位于包的根目录而不是构建目录中,所以只满足第 1 点和第 3 点。
将源代码放置在包的根目录中,并且源代码旁边的转译或构建文件允许深度导入,并且 Lerna 也支持,但它不满足第三个标准(整洁)。
拥有进口的地图将解决这个问题,但我不知道任何工具支持导入映射呢。
问题是:是否有一些我错过的方法可以满足列出的所有三个要点?
以jQuery框架为例,如果你运行这样的代码:
$(document).ready(function init() { foo.bar(); });
Run Code Online (Sandbox Code Playgroud)
您在Firebug中获得的堆栈跟踪将如下所示:
init()
anonymous()
anonymous([function(), init(), function(), 4 more...], function(), Object name=args)
anonymous()
anonymous()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它不是非常易读,因为您必须单击每个函数以找出它是什么.匿名函数也会(?)()
在分析器中显示,并且它们可能导致" 无法访问优化闭包 "错误.在我看来,这些是避免它们的充分理由.然后有一个事实是ECMAScript 5将arguments.callee
在其严格模式下弃用,这意味着它不可能用它来引用匿名函数,这使得它们在未来的证据不那么简单.
另一方面,使用命名函数可能会导致重复,例如:
var Foo = {
bar: function bar() {}
}
function Foo() {}
Foo.prototype.bar = function bar() {}
Run Code Online (Sandbox Code Playgroud)
我是否认为根据命名函数提供的调试方便,这种重复是正确的,并且jQuery等良好框架中匿名函数的流行是一种疏忽?
javascript ×2
azure-devops ×1
debugging ×1
expression ×1
function ×1
jquery ×1
ligature ×1
markdown ×1
node.js ×1
npm ×1
packaging ×1
yaml ×1
yarnpkg ×1