如何在sails.js?</script>中添加自动<script>标记链接的例外

时间:2015-02-07 09:24:28

标签: gruntjs sails.js

我正在使用Sails.js构建一个应用程序并使用Paper.js库。 Paper运行在它自己的paperscript范围内,该范围由脚本标记中的type属性定义。标签应为

<script type="text/paperscript" src="/js/public/prototype.js"></script>

为了正常工作。默认情况下,Sails会自动使用grunt-sails链接器任务链接脚本,但我无法找到有关如何为一个文件创建例外或为其定义特定类型属性的任何信息。有这样的方式吗?

1 个答案:

答案 0 :(得分:1)

开箱即用。但!您始终可以自定义构建管道。

将您的prototype.js放入名为assets/paperscript

的新文件夹中

tasks/pipeline.js中,添加:

var paperFilesToInject = [
  'paperscript/**/*.js'
];

module.exports.paperFilesToInject = paperFilesToInject.map(function(path) {
  return '.tmp/public/' + path;
});

tasks/config/sails-linker.js中,在grunt.config.set('sails-linker', {

中添加以下内容
    devPaperscript: {
        options: {
            startTag: '<!--PAPERSCRIPTS-->',
            endTag: '<!--PAPERSCRIPTS END-->',
            fileTmpl: '<script type="text/paperscript" src="%s"></script>',
            appRoot: '.tmp/public'
        },
        files: {
            '.tmp/public/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.ejs': require('../pipeline').paperFilesToInject
        }
    },

    devPaperscriptRelative: {
        options: {
            startTag: '<!--PAPERSCRIPTS-->',
            endTag: '<!--PAPERSCRIPTS END-->',
            fileTmpl: '<script type="text/paperscript" src="%s"></script>',
            appRoot: '.tmp/public',
            relative: true
        },
        files: {
            '.tmp/public/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.ejs': require('../pipeline').paperFilesToInject
        }
    },

    prodPaperscript: {
        options: {
            startTag: '<!--PAPERSCRIPTS-->',
            endTag: '<!--PAPERSCRIPTS END-->',
            fileTmpl: '<script type="text/paperscript" src="%s"></script>',
            appRoot: '.tmp/public'
        },
        files: {
            '.tmp/public/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.ejs': require('../pipeline').paperFilesToInject
        }
    },

    prodPaperscriptRelative: {
        options: {
            startTag: '<!--PAPERSCRIPTS-->',
            endTag: '<!--PAPERSCRIPTS END-->',
            fileTmpl: '<script type="text/paperscript" src="%s"></script>',
            appRoot: '.tmp/public',
            relative: true
        },
        files: {
            '.tmp/public/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.html': require('../pipeline').paperFilesToInject,
            'views/**/*.ejs': require('../pipeline').paperFilesToInject
        }
    },

tasks/register/linkAssets.js中,添加:

'sails-linker:devPaperscript',

tasks/register/linkAssetsBuild.js中,添加:

'sails-linker:devPaperscriptRelative',

tasks/register/prod.js中,添加:

'sails-linker:prodPaperscript',

tasks/register/linkAssetsProd.js中,添加:

'sails-linker:prodPaperscriptRelative',

在您看来,在注释文件的地方添加以下内容:

<!--PAPERSCRIPTS-->
<!--PAPERSCRIPTS END-->

请注意,与常规js文件不同,它不会生成concat / minified。