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

Javascript 生成polymer应用程序的zip,不包含所有非生产文件,javascript,polymer,bower,Javascript,Polymer,Bower,如果您使用bower设置聚合物应用程序,您将获得无数不需要的文件。想到 未导入的标记 大多数/bower\u组件中的README.md和文档 大多数/bower\u组件中的演示文件/ 如果您在http服务器上运行它,这并不重要,但是如果您想将其打包为一个打包的应用程序,它就变得非常重要。现在,使用suverize可以内联所有html标记,但是生成的文件仍然有如下引用 <polymer-element [...] assetpath="bower_components/core-icon

如果您使用bower设置聚合物应用程序,您将获得无数不需要的文件。想到

  • 未导入的标记
  • 大多数
    /bower\u组件中的README.md和文档
  • 大多数
    /bower\u组件中的演示文件/
如果您在http服务器上运行它,这并不重要,但是如果您想将其打包为一个打包的应用程序,它就变得非常重要。现在,使用
suverize
可以内联所有html标记,但是生成的文件仍然有如下引用

<polymer-element [...] assetpath="bower_components/core-icon/">

这样根本不能真正解决问题。我很难相信我是唯一遇到这个问题的人,那么我是做错了什么了吗?

您可以用它来生成生产代码。我已经附上一个基本的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']);
};
module.exports=函数(grunt){
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
多姆·芒格:{
阅读:{
选项:{
阅读:[
{选择器:'link',属性:'href',writeto:'CssRefs',isPath:true},
{选择器:'script[src]',属性:'src',writeto:'JsRefs',isPath:true}
]
},
src:'src/index.html'
},
URL重写:{
选项:{
删除:['link','script'],
附加:[
{选择器:'head',html:'},
{选择器:'正文',html:'}
]
},
src:['dist/index.html']
}
},
康卡特:{
选项:{
分隔符:';'
},
地区:{
档案:{
'dist/script/main.js':['']
}
}
},
cssc:{
地区:{
选项:{
分拣员:错,
换行符:错误,
sortDeclarations:错,
合并声明:错误,
ConsolidateVia选择器:false,
合并媒体:false
},
档案:{
'dist/style/screen.css':['']
}
}
},
清洁:{
地区:{
src:['dist']
}
}
}
);
//加载所有必需的grunt插件
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
//自定义任务
registerTask('default',['clean','dom_-munger:read','concat','cssc','dom_-munger:urlRewrite']);
};

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

这感觉就像。。。太多的杀伤力,所以。。。错。这感觉就像是黑客破解了实际问题,因为真正的问题是所有不同类型的文件(文档、演示、实际生产代码)的混合。。。不是说你的解决方案可能不是最好的。。。只是有点担心简单的东西会增加复杂性~。硫化是目前最好的方法。
assetpath
属性是为图像/等生成正确URL所必需的。不过,我对您遇到的问题感到有点困惑?@never:同一个目录还包含文档等,这是您不想在脱机/本地应用程序中分发的内容。仍然困惑,抱歉:您确实需要带文档的源代码,但您只需要删除所有未使用的源代码?如果不需要,则是:
suverize--strip
没有做您希望它做的事情?