javascript - 生成 polymer 应用程序的 zip,不含所有非生产文件

标签 javascript polymer bower

如果您使用 Bower 设置 Polymer 应用程序,您将获得无数不需要的文件。想想

  • 未导入的标签
  • 大多数 /bower_components/ 中的 README.md 和文档
  • 大多数 /bower_components/ 中的演示文件

如果您在 http 服务器上运行它,这并不重要,但如果您想将其捆绑为打包应用程序,它就变得很重要。现在,使用 vulcanize 可以内联所有 html 标签,但是生成的文件仍然具有诸如

之类的引用
<polymer-element [...] assetpath="bower_components/core-icon/">

因此根本没有真正解决问题。我很难相信我是唯一遇到这个问题的人,所以我做错了什么还是什么?

最佳答案

您可以使用Grunt生成您的生产代码。我附上了一个基本的 grunt 配置,它将对您有所帮助。

该脚本假定使用以下 grunt 插件:

    grunt-contrib-clean
    grunt-contrib-concat
    grunt-cssc
    grunt-dom-munger
    matchdep

示例 grunt.js:

    module.exports = function (grunt) {

    grunt.initConfig({
            pkg: grunt.file.readJSON('package.json'),
            dom_munger: {
                read: {
                    options: {
                        read: [
                            {selector: 'link', attribute: 'href', writeto: 'CssRefs', isPath: true},
                            {selector: 'script[src]', attribute: 'src', writeto: 'JsRefs', isPath: true}
                        ]
                    },
                    src: 'src/index.html'
                },
                urlRewrite: {
                    options: {
                        remove: ['link', 'script'],
                        append: [
                            {selector: 'head', html: '<link href="style/screen.css" rel="stylesheet" />'},
                            {selector: 'body', html: '<script src="script/main.app"></script>'}
                        ]
                    },
                    src: ['dist/index.html']
                }
            },
            concat: {
                options: {
                    separator: ';'
                },
                dist: {
                    files: {
                        'dist/script/main.js': ['<%= dom_munger.data.JsRefs %>']
                    }
                }
            },
            cssc: {
                dist: {
                    options: {
                        sortSelectors: false,
                        lineBreaks: false,
                        sortDeclarations: false,
                        consolidateViaDeclarations: false,
                        consolidateViaSelectors: false,
                        consolidateMediaQueries: false
                    },
                    files: {
                        'dist/style/screen.css': ['<%= dom_munger.data.CssRefs %>']
                    }
                }
            },
            clean: {
                dist: {
                    src: ['dist']
                }
            }
        }
    );

//Load all required grunt plugins
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

//Custom Tasks
    grunt.registerTask('default', ['clean', 'dom_munger:read', 'concat', 'cssc', 'dom_munger:urlRewrite']);
};

这只是一个基本示例,您可以根据需要进行扩展。

关于javascript - 生成 polymer 应用程序的 zip,不含所有非生产文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26308461/

相关文章:

javascript - JSON stringify 返回空字符串

javascript - 如何修改polymer 1.0中html中的 bool 属性值?

node.js - 在 Nightwatch.js 命令中使用 XPath 来选择 Polymer Element 的子元素?

javascript - 使用 gulp 和 main-bower-files 对输出进行排序(gulp-order 不起作用)

ruby-on-rails - 使用 Bower 更改包名称

javascript - 根据复选框状态附加或删除 html 代码

javascript - 如何在 Sencha Touch 中向模型添加自定义验证规则

javascript - 为什么带有 Node.JS 工具的 Visual Studio 2017 无法运行/调试 node.js 项目?

javascript - polymer iron-ajax调用以及如何在绑定(bind)发生之前修改/过滤响应?

node.js - 使用 grunt 编译时的内存问题