rollup-plugin-vue
Advanced tools
Comparing version 6.0.0-alpha.2 to 6.0.0-alpha.3
@@ -1,4 +0,4 @@ | ||
import { SFCTemplateCompileOptions } from '@vue/compiler-sfc'; | ||
import { SFCTemplateCompileOptions, SFCStyleCompileOptions } from '@vue/compiler-sfc'; | ||
import { Plugin } from 'rollup'; | ||
export interface Options extends Pick<SFCTemplateCompileOptions, 'compiler' | 'compilerOptions' | 'transformAssetUrls'> { | ||
export interface Options extends Pick<SFCTemplateCompileOptions, 'compiler' | 'compilerOptions' | 'transformAssetUrls'>, Pick<SFCStyleCompileOptions, 'preprocessCustomRequire'> { | ||
include: string | RegExp | (string | RegExp)[]; | ||
@@ -8,3 +8,10 @@ exclude: string | RegExp | (string | RegExp)[]; | ||
exposeFilename: boolean; | ||
cssModulesOptions?: { | ||
scopeBehaviour?: 'global' | 'local'; | ||
globalModulePaths?: string[]; | ||
generateScopedName?: string | ((name: string, filename: string, css: string) => string); | ||
hashPrefix?: string; | ||
localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly'; | ||
}; | ||
} | ||
export default function PluginVue(userOptions?: Partial<Options>): Plugin; |
@@ -1,13 +0,4 @@ | ||
'use strict'; | ||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | ||
var compilerSfc = require('@vue/compiler-sfc'); | ||
var createDebugger = _interopDefault(require('debug')); | ||
var hash = _interopDefault(require('hash-sum')); | ||
var path = require('path'); | ||
var qs = _interopDefault(require('querystring')); | ||
var rollupPluginutils = require('rollup-pluginutils'); | ||
var sourcemapCodec = require('sourcemap-codec'); | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const tslib_1 = require("tslib"); | ||
try { | ||
@@ -20,3 +11,10 @@ require.resolve('@vue/compiler-sfc'); | ||
} | ||
const debug = createDebugger('rollup-plugin-vue'); | ||
const compiler_sfc_1 = require("@vue/compiler-sfc"); | ||
const debug_1 = tslib_1.__importDefault(require("debug")); | ||
const hash_sum_1 = tslib_1.__importDefault(require("hash-sum")); | ||
const path_1 = require("path"); | ||
const querystring_1 = tslib_1.__importDefault(require("querystring")); | ||
const rollup_pluginutils_1 = require("rollup-pluginutils"); | ||
const sourcemap_codec_1 = require("sourcemap-codec"); | ||
const debug = debug_1.default('rollup-plugin-vue'); | ||
const defaultOptions = { | ||
@@ -36,3 +34,3 @@ include: /\.vue$/, | ||
const rootContext = process.cwd(); | ||
const filter = rollupPluginutils.createFilter(options.include, options.exclude); | ||
const filter = rollup_pluginutils_1.createFilter(options.include, options.exclude); | ||
return { | ||
@@ -68,3 +66,3 @@ name: 'vue', | ||
// generate source mapping for each character. | ||
result.map.mappings = sourcemapCodec.encode(result.code.split(/\r?\n/).map((line, index) => { | ||
result.map.mappings = sourcemap_codec_1.encode(result.code.split(/\r?\n/).map((line, index) => { | ||
const segments = []; | ||
@@ -90,6 +88,7 @@ for (let i = 0; i < line.length; ++i) { | ||
const descriptor = getDescriptor(query.filename); | ||
const hasScoped = descriptor.styles.some((s) => s.scoped); | ||
if (query.type === 'template') { | ||
debug(`transform(${id})`); | ||
const block = descriptor.template; | ||
const result = compilerSfc.compileTemplate({ | ||
const result = compiler_sfc_1.compileTemplate({ | ||
filename: query.filename, | ||
@@ -101,3 +100,3 @@ source: code, | ||
...options.compilerOptions, | ||
scopeId: `data-v-${query.id}`, | ||
scopeId: hasScoped ? `data-v-${query.id}` : undefined, | ||
}, | ||
@@ -107,3 +106,3 @@ transformAssetUrls: options.transformAssetUrls, | ||
if (result.errors.length) { | ||
result.errors.forEach(error => this.error(typeof error === 'string' | ||
result.errors.forEach((error) => this.error(typeof error === 'string' | ||
? { id: query.filename, message: error } | ||
@@ -114,3 +113,3 @@ : createRollupError(query.filename, error))); | ||
if (result.tips.length) { | ||
result.tips.forEach(tip => this.warn({ | ||
result.tips.forEach((tip) => this.warn({ | ||
id: query.filename, | ||
@@ -125,14 +124,14 @@ message: tip, | ||
} | ||
else if (query.type === 'style' && query.scoped) { | ||
else if (query.type === 'style') { | ||
debug(`transform(${id})`); | ||
const block = descriptor.styles[query.index]; | ||
const result = await compilerSfc.compileStyleAsync({ | ||
const result = await compiler_sfc_1.compileStyleAsync({ | ||
filename: query.filename, | ||
id: `data-v-${query.id}`, | ||
source: block.content, | ||
scoped: query.scoped, | ||
trim: true, | ||
scoped: block.scoped, | ||
modules: !!block.module, | ||
}); | ||
if (result.errors.length) { | ||
result.errors.forEach(error => this.error({ | ||
result.errors.forEach((error) => this.error({ | ||
id: query.filename, | ||
@@ -143,6 +142,11 @@ message: error.message, | ||
} | ||
return { | ||
code: result.code, | ||
map: normalizeSourceMap(result.map), | ||
}; | ||
if (query.module) { | ||
return `export default ${_(result.modules)}`; | ||
} | ||
else { | ||
return { | ||
code: result.code, | ||
map: normalizeSourceMap(result.map), | ||
}; | ||
} | ||
} | ||
@@ -155,3 +159,3 @@ return null; | ||
if (errors.length) { | ||
errors.forEach(error => this.error(createRollupError(id, error))); | ||
errors.forEach((error) => this.error(createRollupError(id, error))); | ||
return null; | ||
@@ -175,2 +179,3 @@ } | ||
} | ||
exports.default = PluginVue; | ||
function parseVuePartRequest(id) { | ||
@@ -180,3 +185,3 @@ const [filename, query] = id.split('?', 2); | ||
return { vue: false, filename }; | ||
const raw = qs.parse(query); | ||
const raw = querystring_1.default.parse(query); | ||
if ('vue' in raw) { | ||
@@ -203,3 +208,3 @@ return { | ||
function parseSFC(code, id, sourceRoot) { | ||
const { descriptor, errors } = compilerSfc.parse(code, { | ||
const { descriptor, errors } = compiler_sfc_1.parse(code, { | ||
sourceMap: true, | ||
@@ -214,8 +219,8 @@ filename: id, | ||
function transformVueSFC(code, resourcePath, descriptor, { rootContext, isProduction, }, options) { | ||
const shortFilePath = path.relative(rootContext, resourcePath) | ||
const shortFilePath = path_1.relative(rootContext, resourcePath) | ||
.replace(/^(\.\.[\/\\])+/, '') | ||
.replace(/\\/g, '/'); | ||
const id = hash(isProduction ? shortFilePath + '\n' + code : shortFilePath); | ||
const id = hash_sum_1.default(isProduction ? shortFilePath + '\n' + code : shortFilePath); | ||
// feature information | ||
const hasScoped = descriptor.styles.some(s => s.scoped); | ||
const hasScoped = descriptor.styles.some((s) => s.scoped); | ||
const templateImport = getTemplateCode(descriptor, resourcePath, id, hasScoped); | ||
@@ -237,3 +242,3 @@ const scriptImport = getScriptCode(descriptor, resourcePath); | ||
else if (options.exposeFilename) { | ||
output.push(`script.__file = ${_(path.basename(shortFilePath))}`); | ||
output.push(`script.__file = ${_(path_1.basename(shortFilePath))}`); | ||
} | ||
@@ -275,8 +280,12 @@ output.push('export default script'); | ||
const src = style.src || resourcePath; | ||
// do not include module in default query, since we use it to indicate | ||
// that the module needs to export the modules json | ||
const attrsQuery = attrsToQuery(style.attrs, 'css'); | ||
const attrsQueryWithoutModule = attrsQuery.replace(/&module(=true)?/, ''); | ||
// make sure to only pass id when necessary 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}`; | ||
const styleRequest = _(src + query); | ||
const query = `?vue&type=style&index=${i}${idQuery}`; | ||
const styleRequest = src + query + attrsQuery; | ||
const styleRequestWithoutModule = src + query + attrsQueryWithoutModule; | ||
if (style.module) { | ||
@@ -287,6 +296,6 @@ if (!hasCSSModules) { | ||
} | ||
stylesCode += genCSSModulesCode(id, i, styleRequest, style.module); | ||
stylesCode += genCSSModulesCode(id, i, styleRequest, styleRequestWithoutModule, style.module); | ||
} | ||
else { | ||
stylesCode += `\nimport ${styleRequest}`; | ||
stylesCode += `\nimport ${_(styleRequest)}`; | ||
} | ||
@@ -323,3 +332,3 @@ // TODO SSR critical CSS collection | ||
if (!ignoreList.includes(name)) { | ||
query += `&${qs.escape(name)}=${value ? qs.escape(String(value)) : ``}`; | ||
query += `&${querystring_1.default.escape(name)}${value ? `=${querystring_1.default.escape(String(value))}` : ``}`; | ||
} | ||
@@ -350,5 +359,9 @@ } | ||
// @ts-ignore | ||
id, index, request, moduleName) { | ||
id, index, request, requestWithoutModule, moduleName) { | ||
const styleVar = `style${index}`; | ||
let code = `\nimport ${styleVar} from ${request}`; | ||
let code = | ||
// first import the CSS for extraction | ||
`\nimport ${_(requestWithoutModule)}` + | ||
// then import the json file to expose to component... | ||
`\nimport ${styleVar} from ${_(request + '.js')}`; | ||
// inject variable | ||
@@ -359,4 +372,4 @@ const name = typeof moduleName === 'string' ? moduleName : '$style'; | ||
} | ||
// overwrite TS generated exports for commonjs usage | ||
// but preserves typing | ||
module.exports = PluginVue; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "rollup-plugin-vue", | ||
"version": "6.0.0-alpha.2", | ||
"version": "6.0.0-alpha.3", | ||
"license": "MIT", | ||
@@ -11,6 +11,10 @@ "main": "dist/index.js", | ||
], | ||
"scripts": { | ||
"build": "tsc -p .", | ||
"prepublishOnly": "tsc -p .", | ||
"dev": "tsc -w -p ." | ||
}, | ||
"dependencies": { | ||
"debug": "^4.1.1", | ||
"hash-sum": "^2.0.0", | ||
"lint-staged": "^10.1.1", | ||
"rollup-pluginutils": "^2.8.2", | ||
@@ -23,10 +27,9 @@ "sourcemap-codec": "^1.4.8" | ||
"devDependencies": { | ||
"@rollup/plugin-typescript": "^4.0.0", | ||
"@types/debug": "^4.1.5", | ||
"@types/jest": "^24.9.0", | ||
"@vue/compiler-sfc": "^3.0.0-alpha.10", | ||
"@types/node": "^13.13.2", | ||
"@vue/compiler-sfc": "^3.0.0-beta.4", | ||
"husky": "^4.2.0", | ||
"rollup": "^1.29.1", | ||
"tsdx": "^0.12.3", | ||
"tslib": "^1.10.0", | ||
"lint-staged": "^10.1.7", | ||
"prettier": "^2.0.5", | ||
"rollup": "^2.7.2", | ||
"typescript": "^3.7.5" | ||
@@ -49,10 +52,3 @@ }, | ||
"singleQuote": true | ||
}, | ||
"scripts": { | ||
"build": "rollup -c", | ||
"lint": "tsdx lint src", | ||
"prepublishOnly": "npm run build", | ||
"start": "tsdx watch --target node", | ||
"test": "tsdx test" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
5
8
371
18015
5
1
- Removedlint-staged@^10.1.1
- Removed@babel/code-frame@7.24.7(transitive)
- Removed@babel/highlight@7.24.7(transitive)
- Removed@types/parse-json@4.0.2(transitive)
- Removedaggregate-error@3.1.0(transitive)
- Removedansi-colors@4.1.3(transitive)
- Removedansi-escapes@4.3.2(transitive)
- Removedansi-regex@5.0.1(transitive)
- Removedansi-styles@3.2.14.3.0(transitive)
- Removedastral-regex@2.0.0(transitive)
- Removedbraces@3.0.3(transitive)
- Removedcallsites@3.1.0(transitive)
- Removedchalk@2.4.24.1.2(transitive)
- Removedclean-stack@2.2.0(transitive)
- Removedcli-cursor@3.1.0(transitive)
- Removedcli-truncate@2.1.0(transitive)
- Removedcolor-convert@1.9.32.0.1(transitive)
- Removedcolor-name@1.1.31.1.4(transitive)
- Removedcolorette@2.0.20(transitive)
- Removedcommander@6.2.1(transitive)
- Removedcosmiconfig@7.1.0(transitive)
- Removedcross-spawn@7.0.3(transitive)
- Removeddedent@0.7.0(transitive)
- Removedemoji-regex@8.0.0(transitive)
- Removedend-of-stream@1.4.4(transitive)
- Removedenquirer@2.4.1(transitive)
- Removederror-ex@1.3.2(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedexeca@4.1.0(transitive)
- Removedfill-range@7.1.1(transitive)
- Removedget-own-enumerable-property-symbols@3.0.2(transitive)
- Removedget-stream@5.2.0(transitive)
- Removedhas-flag@3.0.04.0.0(transitive)
- Removedhuman-signals@1.1.1(transitive)
- Removedimport-fresh@3.3.0(transitive)
- Removedindent-string@4.0.0(transitive)
- Removedis-arrayish@0.2.1(transitive)
- Removedis-fullwidth-code-point@3.0.0(transitive)
- Removedis-number@7.0.0(transitive)
- Removedis-obj@1.0.1(transitive)
- Removedis-regexp@1.0.0(transitive)
- Removedis-stream@2.0.1(transitive)
- Removedis-unicode-supported@0.1.0(transitive)
- Removedisexe@2.0.0(transitive)
- Removedjs-tokens@4.0.0(transitive)
- Removedjson-parse-even-better-errors@2.3.1(transitive)
- Removedlines-and-columns@1.2.4(transitive)
- Removedlint-staged@10.5.4(transitive)
- Removedlistr2@3.14.0(transitive)
- Removedlog-symbols@4.1.0(transitive)
- Removedlog-update@4.0.0(transitive)
- Removedmerge-stream@2.0.0(transitive)
- Removedmicromatch@4.0.8(transitive)
- Removedmimic-fn@2.1.0(transitive)
- Removednormalize-path@3.0.0(transitive)
- Removednpm-run-path@4.0.1(transitive)
- Removedonce@1.4.0(transitive)
- Removedonetime@5.1.2(transitive)
- Removedp-map@4.0.0(transitive)
- Removedparent-module@1.0.1(transitive)
- Removedparse-json@5.2.0(transitive)
- Removedpath-key@3.1.1(transitive)
- Removedpath-type@4.0.0(transitive)
- Removedpicomatch@2.3.1(transitive)
- Removedplease-upgrade-node@3.2.0(transitive)
- Removedpump@3.0.2(transitive)
- Removedresolve-from@4.0.0(transitive)
- Removedrestore-cursor@3.1.0(transitive)
- Removedrfdc@1.4.1(transitive)
- Removedrxjs@7.8.1(transitive)
- Removedsemver-compare@1.0.0(transitive)
- Removedshebang-command@2.0.0(transitive)
- Removedshebang-regex@3.0.0(transitive)
- Removedsignal-exit@3.0.7(transitive)
- Removedslice-ansi@3.0.04.0.0(transitive)
- Removedstring-argv@0.3.1(transitive)
- Removedstring-width@4.2.3(transitive)
- Removedstringify-object@3.3.0(transitive)
- Removedstrip-ansi@6.0.1(transitive)
- Removedstrip-final-newline@2.0.0(transitive)
- Removedsupports-color@5.5.07.2.0(transitive)
- Removedthrough@2.3.8(transitive)
- Removedto-regex-range@5.0.1(transitive)
- Removedtslib@2.7.0(transitive)
- Removedtype-fest@0.21.3(transitive)
- Removedwhich@2.0.2(transitive)
- Removedwrap-ansi@6.2.07.0.0(transitive)
- Removedwrappy@1.0.2(transitive)
- Removedyaml@1.10.2(transitive)