【问题标题】:Grunt / Docker file pathsGrunt / Docker 文件路径
【发布时间】:2016-12-12 02:35:36
【问题描述】:

我正在运行 Grunt,但无法让 docker (jsdocs) 将其生成的文件放在外部文件夹中。不管我通过什么“dest”,它仍然将生成的 html 文件放在与 javascript 文件相同的目录中。

Grunt build -v 日志:

Running "docker:build" (docker) task
Verifying property docker.build exists in config...OK
Files: C:/mysite/src/html/scripts/components/app-helpers.js -> jsdocs/app-helpers.js
Files: C:/mysite/src/html/scripts/components/datatables-functions.js -> jsdocs/datatables-functions.js
Files: C:/mysite/src/html/scripts/components/highcharts-functions.js -> jsdocs/highcharts-functions.js
Files: C:/mysite/src/html/scripts/components/pagination.js -> jsdocs/pagination.js
Files: C:/mysite/src/html/scripts/components/resizer.js -> jsdocs/resizer.js
Files: C:/mysite/src/html/scripts/components/slideout.js -> jsdocs/slideout.js
Files: C:/mysite/src/html/scripts/components/tabs.js -> jsdocs/tabs.js
Files: C:/mysite/src/html/scripts/components/ui.js -> jsdocs/ui.js
Files: C:/mysite/src/html/scripts/components/widget.js -> jsdocs/widget.js
Files: C:/mysite/src/html/scripts/components/widgets/cards.js -> jsdocs/cards.js
Files: C:/mysite/src/html/scripts/components/widgets/figures.js -> jsdocs/figures.js
Files: C:/mysite/src/html/scripts/components/widgets/flip-card.js -> jsdocs/flip-card.js
Files: C:/mysite/src/html/scripts/components/widgets/list-view.js -> jsdocs/list-view.js
Files: C:/mysite/src/html/scripts/components/widgets/projects.js -> jsdocs/projects.js
Options: onlyUpdated=false, colourScheme="default", ignoreHidden=false, sidebarState, exclude=false, lineNums=false, js=[], css=[], extras=[]
Options: onlyUpdated=false, colourScheme="default", ignoreHidden=false, sidebarState, exclude=false, lineNums=false, js=[], css=[], extras=[]
Destination: jsdocs/app-helpers.js
Destination: jsdocs/datatables-functions.js
Destination: jsdocs/highcharts-functions.js
Destination: jsdocs/pagination.js
Destination: jsdocs/resizer.js
Destination: jsdocs/slideout.js
Destination: jsdocs/tabs.js
Destination: jsdocs/ui.js
Destination: jsdocs/widget.js
Destination: jsdocs/cards.js
Destination: jsdocs/figures.js
Destination: jsdocs/flip-card.js
Destination: jsdocs/list-view.js
Destination: jsdocs/projects.js
Generated: C:\mysite\src\html\scripts\components\app-helpers.js.html
Generated: C:\mysite\src\html\scripts\components\datatables-functions.js.html
Generated: C:\mysite\src\html\scripts\components\highcharts-functions.js.html
Generated: C:\mysite\src\html\scripts\components\pagination.js.html
Generated: C:\mysite\src\html\scripts\components\resizer.js.html
Generated: C:\mysite\src\html\scripts\components\slideout.js.html
Generated: C:\mysite\src\html\scripts\components\tabs.js.html
Generated: C:\mysite\src\html\scripts\components\ui.js.html
Generated: C:\mysite\src\html\scripts\components\widget.js.html
Generated: C:\mysite\src\html\scripts\components\widgets\cards.js.html
Generated: C:\mysite\src\html\scripts\components\widgets\figures.js.html
Generated: C:\mysite\src\html\scripts\components\widgets\flip-card.js.html
Generated: C:\mysite\src\html\scripts\components\widgets\list-view.js.html
Generated: C:\mysite\src\html\scripts\components\widgets\projects.js.html
Saved file tree to doc-filelist.js
Copied JS to doc-script.js
Copied default.css to doc-style.css
Done.

我的配置

docker: {
            build: {
                expand: true,
                flatten: true,
                cwd: String(global_scripts_folder).replace(/\\\\/g, "/").replace(/\\/g, "/"),
                src: ['components/**/*.js'],
                dest: 'jsdocs',
                options: {
                    //template : "node_modules/ink-docstrap/cosmo",
                    //configure : "node_modules/ink-docstrap/template/jsdoc.conf.json"
                }
            }
        },

【问题讨论】:

  • 您在 Windows 机器上。所以我不确定这条线cwd: String(global_scripts_folder).replace(/\\\\/g, "/").replace(/\\/g, "/")。与 Linux 不同,我认为 windows 目录路径是基于 `` 正斜杠的。尝试注释掉那个正则表达式,看看它是否有效
  • 正确,我在 Windows 机器上。我尝试删除正则表达式并得到相同的结果。奇怪的是它如何正确打印所有目标路径,然后不将生成的文件放入其中。
  • 感谢@user2094477 回复我。我已将解决方案写成答案,并试图回答您在评论中提出的问题。如果您可以单击答案旁边的tick 将其标记为已回答,将不胜感激。这样我们就可以对此进行关闭。谢谢。

标签: javascript node.js docker gruntjs jsdoc


【解决方案1】:

根据命令行日志,听起来像是在 windows 盒子上运行那个 grunt 文件,因此这个正则表达式;

cwd: String(global_scripts_folder).replace(/\\\\/g, "/").replace(/\\/g, "/")

可能会让您感到悲伤,仅仅是因为; Windows 目录路径基于\ 正斜杠。

这里的问题是正则表达式试图将所有正斜杠转换为反斜杠,如果这个 Grunt 文件从 Windows 移植到 Linux 环境,这将起作用。

问:奇怪的是它如何正确打印所有目标路径,然后没有将生成的文件放入其中。

答:我认为 Grunt 的 -v 详细模式可以正确报告事情。只是文件现在被命名为jsdocs/datatables-functions.js 而不是datatables-function.js。不知何故,windows 必须将其解释为完整的文件名。

希望这会有所帮助。

【讨论】:

  • 这是真的,我在 Windows 机器上...不是自愿选择的 ;)。我的整个 gruntfile 使用正斜杠没有任何问题。删除替换功能不会影响此处的结果,并且正在保存的文件中没有“jsdocs/”。它们具有相同的名称,并在末尾添加了 html 扩展名,并被放置在 js 文件旁边。但是,名为 doc-filelist.js、doc-script.js 和 doc-style.css 的文件被放置在正确的目录 (jsdocs) 中。
猜你喜欢
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多