【问题标题】:Grunt cwd option issueGrunt cwd 选项问题
【发布时间】:2015-05-19 05:10:03
【问题描述】:

我正在尝试在我的项目中配置 grunt-svg-sprite 插件,并按照此处的文档 http://gruntjs.com/configuring-tasks:

cwd 所有 src 匹配都相对于(但不包括)这个路径。

src 要匹配的模式,相对于 cwd。

根据https://www.npmjs.com/package/grunt-svg-sprite

但是,由于 path/to/assets 将成为形状 ID 的一部分,因此在大多数情况下,您很可能希望添加一个工作目录:

your_target: {
    expand      : true,
    cwd         : 'path/to/assets',
    src         : ['**/*.svg'],
    dest        : 'path/to/css/dir',
    options     : {
        // Target-specific options 
    }
},

现在,我的 grunt 文件包含以下部分:

    svg_sprites: {
        options: {

        },
        cw_sprites: {
            expand: true,
            cwd: 'public/assets/dist/svgs/',
            src: ['**/*.svg'],
            dest: 'public/assets/stylesheets/svg-sprites',
            options: {
                shape : {
                    dimension: {
                        maxWidth: 32,
                        maxHeight: 32,
                    },
                    spacing: {
                        padding:0,
                    }

                },
                mode: {
                    css : {
                        render: {
                            css: true
                        },
                        example:true
                    },
                    less: true,
                }
            }


        }
    },

当我使用 --verbose 选项运行上述任务时,我在输出中看到以下内容:

....
Reading public/assets/dist/svgs/uncollapsed-triangle.svg...OK
Reading public/assets/fonts/glyphicons-halflings-regular.svg...OK
Reading public/assets/fonts/myraid-pro/MyriadPro-Regular.svg...OK
Warning: Cannot read property 'replace' of undefined Use --force to continue.

根据上面的日志,它正在尝试读取 CWD 路径 public/assets/dist/svgs 之外的其他目录。事实上,它继续读取包含 bower_components 等项目的根目录并扫描整个项目根目录。

我认为使用带有 src 选项的 cwd 选项会将其限制为 'cwd' 的子目录或相对于 'cwd' 的目录。为什么要扫描其他目录?

我错过了什么吗?感谢您的帮助。

【问题讨论】:

  • 尝试使用--verbose 标志运行任务,看看它是否会产生更有用的输出。通常,这是任务配置中的问题(只要任务本身没有错误),可能缺少预期的值,或者诸如此类。
  • 为我工作(纠正错别字 svg_sprites 并删除 cwd 中的最后一个 /

标签: node.js svg gruntjs


【解决方案1】:

好吧,我想我终于想通了。实际上有两个名称非常相似的项目:

  1. grunt-svg-sprite (https://www.npmjs.com/package/grunt-svg-sprite) 和
  2. grunt-svg-sprites (https://www.npmjs.com/package/grunt-svg-sprites)

我想使用第一个项目,但错误地安装了第二个!!!!!!!显然它不会起作用:-)

我删除了错误的模块 (2) 并安装了第一个模块 - 它就像一个魅力。让我想知道命名约定是否需要对 npm 模块进行一些思考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2018-12-03
    相关资源
    最近更新 更多