forked from daren.hsu/line_push
update
This commit is contained in:
+22
-12
@@ -1,21 +1,31 @@
|
||||
const qs = require('querystring')
|
||||
const { attrsToQuery } = require('./utils')
|
||||
|
||||
module.exports = function genCustomBlocksCode (
|
||||
module.exports = function genCustomBlocksCode(
|
||||
blocks,
|
||||
resourcePath,
|
||||
resourceQuery,
|
||||
stringifyRequest
|
||||
) {
|
||||
return `\n/* custom blocks */\n` + blocks.map((block, i) => {
|
||||
const src = block.attrs.src || resourcePath
|
||||
const attrsQuery = attrsToQuery(block.attrs)
|
||||
const issuerQuery = block.attrs.src ? `&issuerPath=${qs.escape(resourcePath)}` : ''
|
||||
const inheritQuery = resourceQuery ? `&${resourceQuery.slice(1)}` : ''
|
||||
const query = `?vue&type=custom&index=${i}&blockType=${qs.escape(block.type)}${issuerQuery}${attrsQuery}${inheritQuery}`
|
||||
return (
|
||||
`import block${i} from ${stringifyRequest(src + query)}\n` +
|
||||
`if (typeof block${i} === 'function') block${i}(component)`
|
||||
)
|
||||
}).join(`\n`) + `\n`
|
||||
return (
|
||||
`\n/* custom blocks */\n` +
|
||||
blocks
|
||||
.map((block, i) => {
|
||||
const src = block.attrs.src || resourcePath
|
||||
const attrsQuery = attrsToQuery(block.attrs)
|
||||
const issuerQuery = block.attrs.src
|
||||
? `&issuerPath=${qs.escape(resourcePath)}`
|
||||
: ''
|
||||
const inheritQuery = resourceQuery ? `&${resourceQuery.slice(1)}` : ''
|
||||
const query = `?vue&type=custom&index=${i}&blockType=${qs.escape(
|
||||
block.type
|
||||
)}${issuerQuery}${attrsQuery}${inheritQuery}`
|
||||
return (
|
||||
`import block${i} from ${stringifyRequest(src + query)}\n` +
|
||||
`if (typeof block${i} === 'function') block${i}(component)`
|
||||
)
|
||||
})
|
||||
.join(`\n`) +
|
||||
`\n`
|
||||
)
|
||||
}
|
||||
|
||||
+18
-12
@@ -2,14 +2,15 @@ const { attrsToQuery } = require('./utils')
|
||||
const hotReloadAPIPath = JSON.stringify(require.resolve('vue-hot-reload-api'))
|
||||
const nonWhitespaceRE = /\S+/
|
||||
|
||||
module.exports = function genStyleInjectionCode (
|
||||
module.exports = function genStyleInjectionCode(
|
||||
loaderContext,
|
||||
styles,
|
||||
id,
|
||||
resourcePath,
|
||||
stringifyRequest,
|
||||
needsHotReload,
|
||||
needsExplicitInjection
|
||||
needsExplicitInjection,
|
||||
isProduction
|
||||
) {
|
||||
let styleImportsCode = ``
|
||||
let styleInjectionCode = ``
|
||||
@@ -18,18 +19,19 @@ module.exports = function genStyleInjectionCode (
|
||||
let hasCSSModules = false
|
||||
const cssModuleNames = new Map()
|
||||
|
||||
function genStyleRequest (style, i) {
|
||||
function genStyleRequest(style, i) {
|
||||
const src = style.src || resourcePath
|
||||
const attrsQuery = attrsToQuery(style.attrs, 'css')
|
||||
const inheritQuery = `&${loaderContext.resourceQuery.slice(1)}`
|
||||
// make sure to only pass id when necessary so that we don't inject
|
||||
// make sure to only pass id not src importing so that we don't inject
|
||||
// duplicate tags when multiple components import the same css file
|
||||
const idQuery = style.scoped ? `&id=${id}` : ``
|
||||
const query = `?vue&type=style&index=${i}${idQuery}${attrsQuery}${inheritQuery}`
|
||||
const idQuery = !style.src || style.scoped ? `&id=${id}` : ``
|
||||
const prodQuery = isProduction ? `&prod` : ``
|
||||
const query = `?vue&type=style&index=${i}${idQuery}${prodQuery}${attrsQuery}${inheritQuery}`
|
||||
return stringifyRequest(src + query)
|
||||
}
|
||||
|
||||
function genCSSModulesCode (style, request, i) {
|
||||
function genCSSModulesCode(style, request, i) {
|
||||
hasCSSModules = true
|
||||
|
||||
const moduleName = style.module === true ? '$style' : style.module
|
||||
@@ -71,7 +73,8 @@ module.exports = function genStyleInjectionCode (
|
||||
}
|
||||
|
||||
// empty styles: with no `src` specified or only contains whitespaces
|
||||
const isNotEmptyStyle = style => style.src || nonWhitespaceRE.test(style.content)
|
||||
const isNotEmptyStyle = (style) =>
|
||||
style.src || nonWhitespaceRE.test(style.content)
|
||||
// explicit injection is needed in SSR (for critical CSS collection)
|
||||
// or in Shadow Mode (for injection into shadow root)
|
||||
// In these modes, vue-style-loader exports objects with the __inject__
|
||||
@@ -89,10 +92,9 @@ module.exports = function genStyleInjectionCode (
|
||||
styles.forEach((style, i) => {
|
||||
if (isNotEmptyStyle(style)) {
|
||||
const request = genStyleRequest(style, i)
|
||||
styleInjectionCode += (
|
||||
styleInjectionCode +=
|
||||
`var style${i} = require(${request})\n` +
|
||||
`if (style${i}.__inject__) style${i}.__inject__(context)\n`
|
||||
)
|
||||
if (style.module) genCSSModulesCode(style, request, i)
|
||||
}
|
||||
})
|
||||
@@ -112,11 +114,15 @@ function injectStyles (context) {
|
||||
${styleInjectionCode}
|
||||
}
|
||||
|
||||
${needsHotReload ? `
|
||||
${
|
||||
needsHotReload
|
||||
? `
|
||||
module.hot && module.hot.dispose(function (data) {
|
||||
disposed = true
|
||||
})
|
||||
` : ``}
|
||||
`
|
||||
: ``
|
||||
}
|
||||
|
||||
${cssModulesHotReloadCode}
|
||||
`.trim()
|
||||
|
||||
+1
-6
@@ -2,12 +2,7 @@ const qs = require('querystring')
|
||||
|
||||
// these are built-in query parameters so should be ignored
|
||||
// if the user happen to add them as attrs
|
||||
const ignoreList = [
|
||||
'id',
|
||||
'index',
|
||||
'src',
|
||||
'type'
|
||||
]
|
||||
const ignoreList = ['id', 'index', 'src', 'type']
|
||||
|
||||
// transform the attrs on a SFC block descriptor into a resourceQuery string
|
||||
exports.attrsToQuery = (attrs, langFallback) => {
|
||||
|
||||
Reference in New Issue
Block a user